This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/28162] ice on valid code
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Jun 2006 10:01:40 -0000
- Subject: [Bug c/28162] ice on valid code
- References: <bug-28162-9596@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from rguenth at gcc dot gnu dot org 2006-06-25 10:01 -------
min is not less than max:
(gdb) call debug_tree (min)
<integer_cst 0xa78f57b0 type <integer_type 0xa7bf42e0 unsigned int> constant
invariant 4294966724>
(gdb) call debug_tree (max)
<integer_cst 0xa7be2498 type <integer_type 0xa7bf433c long int> constant
invariant 2147483647>
but worse, their types don't match. (I guess the former wants to be casted
to int)
#1 0x086124ff in set_value_range (vr=0xaff5a110, t=VR_RANGE, min=0xa78f57b0,
max=0xa7be2498, equiv=0x8a30dd8)
at /home/richard/src/trunk/gcc/tree-vrp.c:157
#2 0x08617d92 in adjust_range_with_scev (vr=0xaff5a110, loop=0x89f3980,
stmt=0xa7966774, var=0xa700a1e0)
at /home/richard/src/trunk/gcc/tree-vrp.c:2090
#3 0x0861e035 in vrp_visit_assignment (stmt=0xa7966774, output_p=0xaff5a278)
at /home/richard/src/trunk/gcc/tree-vrp.c:3457
#4 0x0861f9a0 in vrp_visit_stmt (stmt=0xa7966774, taken_edge_p=0xaff5a27c,
output_p=0xaff5a278) at /home/richard/src/trunk/gcc/tree-vrp.c:3850
(gdb) call debug_generic_expr (stmt)
D.23941_257 = p_max1D.23874_118 * 0fffffffc
<mult_expr 0xa7966798
type <integer_type 0xa7bf42e0 unsigned int public unsigned SI
size <integer_cst 0xa7be23f0 constant invariant 32>
unit size <integer_cst 0xa7be2180 constant invariant 4>
align 32 symtab 0 alias set -1 precision 32 min <integer_cst 0xa7be2468
0> max <integer_cst 0xa7be2450 4294967295>
pointer_to_this <pointer_type 0xa7c94e60>>
arg 0 <ssa_name 0xa7566e40
type <integer_type 0xa7a5bcf0 Word32 sizes-gimplified public SI size
<integer_cst 0xa7be23f0 32> unit size <integer_cst 0xa7be2180 4>
align 32 symtab 0 alias set -1 precision 32 min <integer_cst
0xa7be2480 -2147483648> max <integer_cst 0xa7be2498 2147483647>
pointer_to_this <pointer_type 0xa7a60678>>
var <var_decl 0xa7897898 p_max1> def_stmt <modify_expr 0xa794fbf4>
version 118>
arg 1 <integer_cst 0xa79a1be8 type <integer_type 0xa7bf42e0 unsigned int>
constant invariant 4294967292>>
type mismatch in the MULT_EXPR (signed vs. unsigned).
ol_ltpD.6288::
;; basic block 10, loop depth 1, count 0
;; prev block 17, next block 11
;; pred: 67 (true,exec)
;; succ: 11 (true) 12 (false)
<L24>:;
p_max1_118 = ASSERT_EXPR <p_max1_13, p_max1_13 > 19>;
D.23941_257 = p_max1_118 * 0fffffffc;
D.23942_258 = (Float32 *) D.23941_257;
D.23943_259 = D.23942_258 + &corr[143];
...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28162