------- Comment #2 from rguenth at gcc dot gnu dot org 2008-01-13 19:17 ------- This is the same issue as PR31714 (which occurs only on the 4.1 branch).
#0 0x084c1ddd in operand_equal_p (arg0=0xb7d275b0, arg1=0xb7d275cc, flags=0) at /home/richard/src/trunk/gcc/fold-const.c:3015 #1 0x084c4664 in operand_equal_p (arg0=0xb7d23be0, arg1=0xb7d23c20, flags=0) at /home/richard/src/trunk/gcc/fold-const.c:3157 #2 0x084c48d0 in operand_equal_p (arg0=0xb7d2806c, arg1=0xb7d28090, flags=0) at /home/richard/src/trunk/gcc/fold-const.c:3162 #3 0x0853fcb1 in fold_ternary (code=COND_EXPR, type=0xb7c84548, op0=0xb7d25550, op1=0xb7d2806c, op2=0xb7d28090) at /home/richard/src/trunk/gcc/fold-const.c:13018 #4 0x08543a00 in fold_build3_stat (code=COND_EXPR, type=0xb7c84548, op0=0xb7d25550, op1=0xb7d2806c, op2=0xb7d28090) at /home/richard/src/trunk/gcc/fold-const.c:13717 #5 0x084e1cc7 in fold_binary_op_with_conditional_arg (code=GT_EXPR, type=0xb7c84548, op0=0xb7c7f280, op1=0xb7d2747c, cond=0xb7c7f280, arg=0xb7d2747c, cond_first_p=1) at /home/richard/src/trunk/gcc/fold-const.c:6398 #6 0x08506c18 in fold_binary (code=GT_EXPR, type=0xb7c84548, op0=0xb7c7f280, op1=0xb7d2747c) at /home/richard/src/trunk/gcc/fold-const.c:9532 #7 0x08543530 in fold (expr=0xb7d28048) at /home/richard/src/trunk/gcc/fold-const.c:13331 #8 0x0826d088 in fold_if_not_in_template (expr=0xb7d28048) at /home/richard/src/trunk/gcc/cp/tree.c:2728 #9 0x081f7043 in build_binary_op (code=GT_EXPR, orig_op0=0xb7c7f280, (gdb) call debug_tree (arg0) <tree_list 0xb7d275b0 value <negate_expr 0xb7d23c00 type <integer_type 0xb7c842d8 int public type_6 SI size <integer_cst 0xb7c73620 constant invariant 32> unit size <integer_cst 0xb7c7340c constant invariant 4> align 32 symtab 0 alias set -1 canonical type 0xb7c842d8 precision 32 min <integer_cst 0xb7c735cc -2147483648> max <integer_cst 0xb7c735e8 2147483647> pointer_to_this <pointer_type 0xb7c8d8f0>> arg 0 <template_parm_index 0xb7c78e34 type <integer_type 0xb7c842d8 int> readonly constant invariant index 0 level 1 orig_level 1>>> we leak template args to middle-end fold. 3.3 emits an error: mf/unit.h: In instantiation of `metafloat::core::helpers::details::aligner<7, metafloat::core::float_t<0, 0, 0, CAT_NRM> >': mf/unit.h:108: instantiated from `metafloat::core::helpers::details::normalizer<7, metafloat::core::helpers::details::aligner<7, metafloat::core::float_t<0, 0, 0, CAT_NRM> > >' metafloat.h:135: instantiated from `metafloat::core::helpers::normalizer<7, metafloat::core::float_t<0, 0, 0, CAT_NRM>, true>' metafloat.h:135: instantiated from `metafloat::core::ops::add<F0, F1>' tf.cc:59: instantiated from here mf/unit.h:84: error: no integral type can represent all of the enumerator values for `metafloat::core::helpers::details::aligner<7, metafloat::core::float_t<0, 0, 0, CAT_NRM> >::<anonymous enum>' reducing. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenth at gcc dot gnu dot | |org OtherBugsDependingO| |31714 nThis| | Keywords| |ice-on-invalid-code Known to fail| |3.4.6 4.1.3 4.3.0 Known to work| |3.3.6 Priority|P3 |P4 Summary|templates, enumerations, |[4.1/4.2/4.3 Regression] |overflow, ice |templates, enumerations, | |overflow, ice Target Milestone|--- |4.1.3 Version|unknown |4.3.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34774