summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-04-27 19:58:00 -0700
committerYamaArashi <shadow962@live.com>2016-04-27 19:58:00 -0700
commit981039a7fc49438e74ecaa880fd54cb85431e6ce (patch)
treeae09fe7e46843a63d690bef20ee28600aeeb6fb1
parent4f3e13d6663d4865437a18b98078c23713454613 (diff)
ARG_POINTER_REGNUM / FRAME_POINTER_REGNUM comparisons
-rwxr-xr-xgcc/cse.c4
-rwxr-xr-xgcc/emit-rtl.c6
-rwxr-xr-xgcc/function.c12
-rwxr-xr-xgcc/integrate.c16
-rwxr-xr-xgcc/rtlanal.c2
5 files changed, 3 insertions, 37 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index 1b26f29..3ba28d3 100755
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -4694,10 +4694,8 @@ simplify_relational_operation (code, mode, op0, op1)
be zero, but a SYMBOL_REF can due to #pragma weak. */
if (((NONZERO_BASE_PLUS_P (op0) && op1 == const0_rtx)
|| GET_CODE (op0) == LABEL_REF)
-#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
/* On some machines, the ap reg can be 0 sometimes. */
&& op0 != arg_pointer_rtx
-#endif
)
return const0_rtx;
break;
@@ -4705,9 +4703,7 @@ simplify_relational_operation (code, mode, op0, op1)
case NE:
if (((NONZERO_BASE_PLUS_P (op0) && op1 == const0_rtx)
|| GET_CODE (op0) == LABEL_REF)
-#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
&& op0 != arg_pointer_rtx
-#endif
)
return const_true_rtx;
break;
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 33badc7..37c8a5b 100755
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -678,9 +678,7 @@ gen_lowpart_common (mode, x)
/* We want to keep the stack, frame, and arg pointers
special. */
&& x != frame_pointer_rtx
-#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
&& x != arg_pointer_rtx
-#endif
&& x != stack_pointer_rtx)
return gen_rtx_REG (mode, REGNO (x) + word);
else
@@ -987,9 +985,7 @@ gen_highpart (mode, x)
|| ! rtx_equal_function_value_matters)
/* We want to keep the stack, frame, and arg pointers special. */
&& x != frame_pointer_rtx
-#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
&& x != arg_pointer_rtx
-#endif
&& x != stack_pointer_rtx)
return gen_rtx_REG (mode, REGNO (x) + word);
else
@@ -1078,9 +1074,7 @@ operand_subword (op, i, validate_address, mode)
/* We want to keep the stack, frame, and arg pointers
special. */
|| op == frame_pointer_rtx
-#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
|| op == arg_pointer_rtx
-#endif
|| op == stack_pointer_rtx)
return gen_rtx_SUBREG (word_mode, op, i);
else
diff --git a/gcc/function.c b/gcc/function.c
index f3dfb2e..553bbe7 100755
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -89,9 +89,7 @@ Boston, MA 02111-1307, USA. */
FIRST_PARM_OFFSET - STARTING_FRAME_OFFSET is not a constant during rtl
generation. See fix_lexical_addr for details. */
-#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
#define NEED_SEPARATE_AP
-#endif
/* Number of bytes of args popped by function being compiled on its return.
Zero if no bytes are to be popped.
@@ -3794,16 +3792,12 @@ assign_parms (fndecl, second_time)
current_function_stdarg = stdarg;
/* If the reg that the virtual arg pointer will be translated into is
- not a fixed reg or is the stack pointer, make a copy of the virtual
- arg pointer, and address parms via the copy. The frame pointer is
- considered fixed even though it is not marked as such.
+ not a fixed reg, make a copy of the virtual arg pointer, and address parms
+ via the copy.
The second time through, simply use ap to avoid generating rtx. */
- if ((ARG_POINTER_REGNUM == STACK_POINTER_REGNUM
- || ! (fixed_regs[ARG_POINTER_REGNUM]
- || ARG_POINTER_REGNUM == FRAME_POINTER_REGNUM))
- && ! second_time)
+ if (!fixed_regs[ARG_POINTER_REGNUM] && !second_time)
internal_arg_pointer = copy_to_reg (virtual_incoming_args_rtx);
else
internal_arg_pointer = virtual_incoming_args_rtx;
diff --git a/gcc/integrate.c b/gcc/integrate.c
index 484bf8c..dba5e64 100755
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1218,22 +1218,6 @@ copy_for_inline (orig)
}
break;
-#if 0 /* This is a good idea, but here is the wrong place for it. */
- /* Arrange that CONST_INTs always appear as the second operand
- if they appear, and that `frame_pointer_rtx' or `arg_pointer_rtx'
- always appear as the first. */
- case PLUS:
- if (GET_CODE (XEXP (x, 0)) == CONST_INT
- || (XEXP (x, 1) == frame_pointer_rtx
- || (ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
- && XEXP (x, 1) == arg_pointer_rtx)))
- {
- rtx t = XEXP (x, 0);
- XEXP (x, 0) = XEXP (x, 1);
- XEXP (x, 1) = t;
- }
- break;
-#endif
default:
break;
}
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index b064ed7..d520365 100755
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -816,9 +816,7 @@ refers_to_regno_p (regno, endregno, x, loc)
clobber a virtual register. In fact, we could be more precise,
but it isn't worth it. */
if ((i == STACK_POINTER_REGNUM
-#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
|| i == ARG_POINTER_REGNUM
-#endif
|| i == FRAME_POINTER_REGNUM)
&& regno >= FIRST_VIRTUAL_REGISTER && regno <= LAST_VIRTUAL_REGISTER)
return 1;