i386.c (constant_call_address_operand): Accept (const (plus (symbol_ref) (const_int))).

* config/i386/i386.c (constant_call_address_operand): Accept
	(const (plus (symbol_ref) (const_int))).
	* config/i386/i386.h (PREDICATE_CODES): Add CONST for
	constant_call_address_operand.

	* gcc.c-torture/compile/20010107-1.c: New test.

From-SVN: r38783
This commit is contained in:
Jakub Jelinek 2001-01-07 22:30:22 +01:00 committed by Jakub Jelinek
parent a8b462be08
commit eaf19aba9d
5 changed files with 22 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2001-01-07 Jakub Jelinek <jakub@redhat.com>
* config/i386/i386.c (constant_call_address_operand): Accept
(const (plus (symbol_ref) (const_int))).
* config/i386/i386.h (PREDICATE_CODES): Add CONST for
constant_call_address_operand.
2001-01-08 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* libgcc2.h (W_TYPE_SIZE): Fix case where MIN_UNITS_PER_WORD == 1

View File

@ -1109,6 +1109,10 @@ constant_call_address_operand (op, mode)
rtx op;
enum machine_mode mode ATTRIBUTE_UNUSED;
{
if (GET_CODE (op) == CONST
&& GET_CODE (XEXP (op, 0)) == PLUS
&& GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT)
op = XEXP (XEXP (op, 0), 0);
return GET_CODE (op) == SYMBOL_REF;
}

View File

@ -2830,7 +2830,7 @@ do { long l; \
LABEL_REF, SUBREG, REG, MEM}}, \
{"pic_symbolic_operand", {CONST}}, \
{"call_insn_operand", {REG, SUBREG, MEM, SYMBOL_REF}}, \
{"constant_call_address_operand", {SYMBOL_REF}}, \
{"constant_call_address_operand", {SYMBOL_REF, CONST}}, \
{"const0_operand", {CONST_INT, CONST_DOUBLE}}, \
{"const1_operand", {CONST_INT}}, \
{"const248_operand", {CONST_INT}}, \

View File

@ -1,3 +1,7 @@
2001-01-07 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/compile/20010107-1.c: New test.
2001-01-07 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc.c-torture/execute/builtin-noret-1.c: New test.

View File

@ -0,0 +1,6 @@
unsigned long x[4];
void foo(void)
{
((void (*)())(x+2))();
}