This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/20493] [4.0 Regression] Bootstrap failure
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Mar 2005 03:13:47 -0000
- Subject: [Bug middle-end/20493] [4.0 Regression] Bootstrap failure
- References: <20050316054704.20493.danglin@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From danglin at gcc dot gnu dot org 2005-03-17 03:13 -------
Breakpoint 1, do_compare_and_jump (exp=0x400de208, signed_code=EQ,
unsigned_code=EQ, if_false_label=0x40166ca8, if_true_label=0x0)
at ../../gcc/gcc/dojump.c:930
930 if (HAVE_canonicalize_funcptr_for_compare
(gdb) p debug_tree (exp)
<eq_expr 0x400de208
type <boolean_type 0x400dc620 _Bool public unsigned QI
size <integer_cst 0x400d30f0 constant invariant 8>
unit size <integer_cst 0x400d3108 constant invariant 1>
align 8 symtab 0 alias set -1 precision 1 min <integer_cst 0x400d34e0 0>
max <integer_cst 0x400d3510 1>>
arg 0 <parm_decl 0x40146e00 fptr
type <pointer_type 0x401467e0 fptr_t type <function_type 0x400e9540>
unsigned SI
size <integer_cst 0x400d32e8 constant invariant 32>
unit size <integer_cst 0x400d3078 constant invariant 4>
align 32 symtab 0 alias set -1>
used unsigned SI file fptr.c line 60 size <integer_cst 0x400d32e8 32>
unit size <integer_cst 0x400d3078 4>
align 32 context <function_decl 0x40146d90
__canonicalize_funcptr_for_compare> result <pointer_type 0x401467e0 fptr_t>
initial <pointer_type 0x401467e0 fptr_t>
(reg/v/f:SI 124 [ fptr ]) arg-type <pointer_type 0x401467e0 fptr_t> arg-
type-as-written <pointer_type 0x401467e0 fptr_t>
incoming-rtl (reg:SI 26 %r26 [ fptr ])>
arg 1 <integer_cst 0x4014b180 type <pointer_type 0x401467e0 fptr_t> constant
invariant 4294967295>>
$1 = void
(gdb)
Your patch may fix the problem. However, I'm concerned that I don't
see any indication in the tree that the int cast has been respected.
Rather, it looks as if -1 has been converted to a pointer type.
Possibly, Roger should look at this as I think it was his patch on
the 13th that introduced/exposed the problem.
2005-03-13 Roger Sayle <roger@eyesopen.com>
PR middle-end/19331
* tree.c (get_unwidened): Treat CONVERT_EXPR and NOP_EXPR identically.
* fold-const.c (fold_sign_changed_comparison): Likewise.
(fold_binary): Optimize comparisons against widened operands if
the extension is represented by a CONVERT_EXPR, same as a NOP_EXPR.
--
What |Removed |Added
----------------------------------------------------------------------------
CC| |roger at eyesopen dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20493