This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH]: Fix PR rtl-optimization/31344


Hello!

This problem is the cause of i386 bootstrap failure with dfp.

The core of the problem is in memory_address(), where we force
autoincremented/autodecremented reference register into pseudo. This
causes invalid instruction:

(set (reg/f:SI 61)
       (pre_dec:SI (reg/f:SI 7 sp))) -1 (nil)
   (nil))

The solution is to skip processing of autoinc/dec references in a memory rtx.

Attached patch fixes the failure. The patch was bootstrapped on
i686-pc-linux-gnu and regression tested with -mtune=i386. OK for
mainline?

2007-05-07 Uros Bizjak <ubizjak@gmail.com>

	PR rtl-optimization/31344
       * explow.c (memory_address): Do not force autoincremented or
	autodecremented address references into pseudo register.

testsuite/ChangeLog:

2007-05-07 Uros Bizjak <ubizjak@gmail.com>

	PR rtl-optimization/31344
       * gcc.dg/pr31344.c: New test.

Uros.

Attachment: pr31344.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]