[PATCH, i386]: Macroize add and sub patterns
Jakub Jelinek
jakub@redhat.com
Wed Oct 7 12:23:00 GMT 2009
On Tue, Oct 06, 2009 at 03:53:16PM +0200, Uros Bizjak wrote:
> Hello!
>
> As the $subject says. Macroized in such a way that no functional
> change was introduced (although it was tempting :] ). The patch
> removes ~500 lines, otherwise it mostly moves code around.
Unfortunately this broke bootstrap on x86_64-linux.
../../gcc/gnat1 -gnatwa -quiet -dumpbase a-strunb.adb -auxbase-strip a-strunb.o -O2 -W -Wall -fPIC -g -gnatpg -m32 -mtune=generic -gnatO a-strunb.o a-strunb.adb -o /tmp/ccSzLhJO.s
+===========================GNAT BUG DETECTED==============================+
| 4.5.0 20091007 (experimental) (x86_64-unknown-linux-gnu) GCC error: |
| in decompose_multiword_subregs, at lower-subreg.c:1262 |
| Error detected around a-strunb.adb:360:8 |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html. |
| Use a subject line meaningful to you and us to track the bug. |
| Include the entire contents of this bug box in the report. |
| Include the exact gcc or gnatmake command that you entered. |
| Also include sources listed below in gnatchop format |
| (concatenated together with no headers between files). |
+==========================================================================+
...
(insn 8 7 9 2 a-strunb.adb:357 (set (reg:SI 99 [ D.8603 ])
(plus:SI (reg:SI 80)
(const_int 8 [0x8]))) -1 (nil))
is now considered insn_invalid_p. I think the bug is that while before
lea_1 (etc.) were defined before addsi_1 (etc.), it is now defined after it.
This means in this insn addsi_1 is matched instead of lea_1 in recog, with
num_clobbers 1, clobbering a hard register.
Jakub
More information about the Gcc-patches
mailing list