------- Comment #2 from pinskia at gcc dot gnu dot org 2006-06-13 04:41 ------- Hmm, we get after dce, just: reduced_cell_two_folds[26] = {};
And DCE removes: this_616 = &reduced_cell_two_folds[26].u; .... # SMT.68_1055 = V_MAY_DEF <SMT.68_1054>; this_616->elems[0] = 1; # SMT.68_1056 = V_MAY_DEF <SMT.68_1055>; this_616->elems[1] = 0; # SMT.68_1057 = V_MAY_DEF <SMT.68_1056>; this_616->elems[2] = 0; ... this_621 = &reduced_cell_two_folds[26].h; ... # SMT.68_1058 = V_MAY_DEF <SMT.68_1057>; this_621->elems[0] = 2; # SMT.68_1059 = V_MAY_DEF <SMT.68_1058>; this_621->elems[1] = 1; # SMT.68_1060 = V_MAY_DEF <SMT.68_1059>; this_621->elems[2] = 1; Which does not make sense. Nothing is special in alias shows what is going wrong. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pinskia at gcc dot gnu dot | |org Severity|normal |critical Component|c++ |tree-optimization Keywords| |alias, wrong-code Summary|optimizer bug |[4.2 Regression] optimizer | |bug Target Milestone|--- |4.2.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28003