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]

[Bug middle-end/28915] [4.2 regression] ICE: tree check: expected class 'constant', have 'declaration' (var_decl) in build_vector, at tree.c:973



------- Comment #10 from pinskia at gcc dot gnu dot org  2006-09-06 06:33 -------
Note I think the PPC-linux-gnu crash is actually caused by:

2006-06-20  Roger Sayle  <roger@eyesopen.com>

        * expr.c (expand_expr_real_1) <VECTOR_CST>: For vector constants with
        integer modes, attempt to directly construct an integer constant.

But I have not checked but the backtrace is:


(gdb)
#8  0x085cda79 in copy_constant (exp=0xb7d40cd8) at ../../gcc/varasm.c:2742
2742                ce->value = copy_constant (value);
(gdb)
#9  0x085ce18b in build_constant_desc (exp=0xb7d40cd8)
    at ../../gcc/varasm.c:2815
2815      desc->value = copy_constant (exp);
(gdb)
#10 0x085ce4be in output_constant_def (exp=0xb7d40cd8, defer=1)
    at ../../gcc/varasm.c:2885
2885          desc = build_constant_desc (exp);
(gdb)
#11 0x0834d3f4 in expand_expr_constant (exp=0xb7d40cd8, defer=1,
    modifier=EXPAND_NORMAL) at ../../gcc/expr.c:6433
6433      mem = output_constant_def (exp, defer);
(gdb) up
#12 0x0835084f in expand_expr_real_1 (exp=0xb7d40cd8, target=0xb7d2b954,
    tmode=V4SImode, modifier=EXPAND_NORMAL, alt_rtl=0xbf977bf8)
    at ../../gcc/expr.c:7119
7119              rtx constructor = expand_expr_constant (exp, 1, modifier);
(gdb)
#13 0x0834df9d in expand_expr_real (exp=0xb7d40cd8, target=0xb7d2b954,
    tmode=V4SImode, modifier=EXPAND_NORMAL, alt_rtl=0xbf977bf8)
    at ../../gcc/expr.c:6706
6706          ret = expand_expr_real_1 (exp, target, tmode, modifier, alt_rtl);
(gdb)
#14 0x08340493 in store_expr (exp=0xb7d40cd8, target=0xb7d2b954,
call_param_p=0)
    at ../../gcc/expr.c:4370
4370          temp = expand_expr_real (exp, target, GET_MODE (target),
(gdb)
#15 0x0833f7dc in expand_assignment (to=0xb7d37660, from=0xb7d40cd8)
    at ../../gcc/expr.c:4249
4249      result = store_expr (from, to_rtx, 0);
(gdb)

And then we go into an infinite loop calling copy_constant on a decl.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sayle at gcc dot gnu dot org
 GCC target triplet|x86-64-linux                |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28915


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]