This is the mail archive of the gcc-bugs@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] | |
Hi,
The following patch seems to break m68k-linux:
2002-02-20 Alexandre Oliva <aoliva@redhat.com>
* combine.c (do_SUBST): Sanity check substitutions of
CONST_INTs, and reject them in SUBREGs and ZERO_EXTENDs.
(subst): Simplify SUBREG or ZERO_EXTEND instead of SUBSTing a
CONST_INT into its operand.
(known_cond): Likewise, for ZERO_EXTEND.
* simplify-rtx.c (simplify_unary_operation): Fix condition to
allow for simplification of wide modes. Reject CONST_INTs in
ZERO_EXTEND when their actual mode is not given.
The discussion about this patch is here:
http://gcc.gnu.org/ml/gcc-patches/2002-02/threads.html#00710
I attached the precompiled and a bit reduced file, which shows the
problem (a m68k-elf cross compiler should produce the same).
During cse this
(insn 2255 2254 523 (set (strict_low_part (subreg:QI (reg:SI 371) 3))
(reg:QI 372)) -1 (nil)
(expr_list:REG_EQUAL (zero_extend:SI (reg:QI 372))
(nil)))
becomes
(insn 2255 2254 546 (set (strict_low_part (subreg:QI (reg:SI 371) 3))
(reg:QI 102)) 38 {*m68k.md:1072} (nil)
(expr_list:REG_EQUAL (zero_extend:SI (const_int -72 [0xffffffb8]))
(nil)))
and gcse later dies on this. I need now some help to find the real
problem. Without above patch this transformation is still the same, so
that change isn't probably the real problem. I tried to find out why cse
is doing this, but I didn't get very far yet.
Any ideas?
bye, Roman
Attachment:
typeck.i.gz
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |