[PATCH, i386]: Declare constant_call_address_operand as special predicate

Uros Bizjak ubizjak@gmail.com
Wed Mar 14 08:34:00 GMT 2012


On Wed, Mar 14, 2012 at 12:13 AM, H.J. Lu <hjl.tools@gmail.com> wrote:

>> Similar to tls_symbolic_operand and tls_modbase_operand, we are not
>> interested in the mode of the operand in the predicate.
>>
>> 2012-03-13  Uros Bizjak  <ubizjak@gmail.com>
>>
>>        * config/i386/predicates.md (constant_call_address_operand): Declare
>>        as special predicate.  Update all uses.
>>        * config/i386/i386.md: Remove mode from constant_call_address_operand
>>        predicates.
>>        * config/i386/i386.c (ix86_output_call_insn): Call
>>        constant_call_address_operand with VOIDmode.
>>
>> Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN.
>>
>
> gcc.c-torture/compile/20020129-1.c fails to compile with -mx32 -O:
>
> [hjl@gnu-6 gcc]$ ./xgcc -B./ -mx32
> /export/gnu/import/git/gcc/gcc/testsuite/gcc.c-torture/compile/20020129-1.c
> -S -O
> /export/gnu/import/git/gcc/gcc/testsuite/gcc.c-torture/compile/20020129-1.c:
> In function \u2018foo\u2019:
> /export/gnu/import/git/gcc/gcc/testsuite/gcc.c-torture/compile/20020129-1.c:17:1:
> error: unrecognizable insn:
> (call_insn 10 9 11 3 (set (reg:SI 0 ax)
>        (call (mem:QI (symbol_ref:SI ("a.1707") [flags 0x2] <var_decl
> 0x7ffff15a01e0 a>) [0 *a.0_1 S1 A8])
>            (const_int 0 [0])))
> /export/gnu/import/git/gcc/gcc/testsuite/gcc.c-torture/compile/20020129-1.c:16
> -1
>     (nil)
>    (expr_list:REG_BR_PRED (use (reg:SI 5 di))
>        (nil)))
> /export/gnu/import/git/gcc/gcc/testsuite/gcc.c-torture/compile/20020129-1.c:17:1:
> internal compiler error: in extract_insn, at recog.c:2123
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <http://gcc.gnu.org/bugs.html> for instructions.
> [hjl@gnu-6 gcc]$

I have reverted part of the patch.

2012-03-14  Uros Bizjak  <ubizjak@gmail.com>

	Revert:
	2012-03-14  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/predicates.md (constant_call_address_operand): Declare
	as special predicate.  Update all uses.

Uros.



More information about the Gcc-patches mailing list