This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
- From: "hosking at cs dot purdue dot edu" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Aug 2006 15:52:50 -0000
- Subject: [Bug tree-optimization/28798] remove_phi_node attempts removal of a phi node resized by resize_phi_node
- References: <bug-28798-7109@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #15 from hosking at cs dot purdue dot edu 2006-08-29 15:52 -------
Sorry, my information was in error last time. It seems I got the src/dest
information wrong for the edge being split. The edge is between blocks 32 and
33 in the dump below:
;; Function TrestleGoo__PutProp (TrestleGoo__PutProp)
TrestleGoo__PutProp (M3_BFdKo9_vv, M3_Af40ku_ref)
{
<unnamed type> * M3_BFdKo9_v;
word_32 M3_Cwb5VA_tc;
<unnamed type> * M3_BhAG13_p;
<unnamed type> * M3_BhAG13_e;
struct
{
} L_2;
<unnamed type> * D.403;
<unnamed type> * D.406;
<unnamed type> * D.407;
<unnamed type> * D.419;
<unnamed type> (*<T181>) (<unnamed type> *) D.506;
<unnamed type> * D.505;
<unnamed type> * * D.504;
<unnamed type> * D.503;
<unnamed type> * D.502;
<unnamed type> * * L_2.3;
<unnamed type> D.500;
<unnamed type> D.499;
word_32 D.498;
word_32 D.497;
word_32 D.496;
int_32 D.495;
int_32 * D.494;
<unnamed type> * D.493;
<unnamed type> * * D.492;
<unnamed type> * * D.491;
<unnamed type> D.490;
word_32 D.489;
word_32 D.488;
int_32 M3_Cwb5VA_tc.2;
<unnamed type> D.486;
<unnamed type> D.485;
word_32 D.484;
word_32 D.483;
word_32 D.482;
int_32 D.481;
int_32 * D.480;
<unnamed type> * D.479;
<unnamed type> * * D.478;
<unnamed type> * D.477;
<unnamed type> D.476;
<unnamed type> D.475;
word_32 D.474;
word_32 D.473;
word_32 D.472;
int_32 D.471;
int_32 * D.470;
<unnamed type> * D.469;
<unnamed type> * * M3_BhAG13_e.1;
<unnamed type> * * D.467;
<unnamed type> * * D.466;
<unnamed type> * D.465;
<unnamed type> * D.464;
<unnamed type> * D.463;
<unnamed type> * * D.462;
<unnamed type> * D.461;
int_32 D.460;
<unnamed type> * D.459;
int_32 D.458;
int_32 * D.457;
<unnamed type> * D.456;
int_32 D.455;
word_32 D.454;
word_32 D.453;
word_32 D.452;
int_32 D.451;
int_32 * D.450;
<unnamed type> * D.449;
<unnamed type> * D.448;
int_32 * D.447;
<unnamed type> * D.446;
<unnamed type> (*<T181>) (<unnamed type> *) D.445;
<unnamed type> * D.444;
<unnamed type> * * D.443;
<unnamed type> * D.442;
<unnamed type> * * D.441;
<unnamed type> * D.440;
<unnamed type> * * D.439;
<unnamed type> * D.438;
<unnamed type> D.437;
<unnamed type> D.436;
word_32 D.435;
word_32 D.434;
word_32 D.433;
int_32 D.432;
int_32 * D.431;
<unnamed type> * D.430;
<unnamed type> * D.429;
<unnamed type> * * D.428;
<unnamed type> * D.427;
# BLOCK 0 freq:1000
# PRED: ENTRY [100.0%] (fallthru,exec)
D.427_4 = &MM_TrestleGoo + 52;
D.428_5 = (<unnamed type> * *) D.427_4;
# VUSE <MM_TrestleGoo_197>;
D.429_6 = *D.428_5;
if (D.429_6 == 0B) goto <L43>; else goto <L0>;
# SUCC: 43 [19.0%] (true,exec) 1 [81.0%] (false,exec)
# BLOCK 43 freq:190
# PRED: 0 [19.0%] (true,exec)
<L43>:;
goto <bb 3> (<L2>);
# SUCC: 3 [100.0%] (fallthru)
# BLOCK 1 freq:810
# PRED: 0 [81.0%] (false,exec)
<L0>:;
D.430_166 = D.429_6 + ffffffffffffffff;
D.431_167 = (int_32 *) D.430_166;
# VUSE <MM_TrestleGoo_197>;
# VUSE <L_2_198>;
D.432_168 = *D.431_167;
D.433_169 = (word_32) D.432_168;
D.434_170 = D.433_169 << 22;
D.435_171 = D.434_170 >> 31;
if (D.435_171 == 0) goto <L44>; else goto <L1>;
# SUCC: 44 [70.0%] (true,exec) 2 [30.0%] (false,exec)
# BLOCK 44 freq:567
# PRED: 1 [70.0%] (true,exec)
<L44>:;
goto <bb 3> (<L2>);
# SUCC: 3 [100.0%] (fallthru)
# BLOCK 2 freq:243
# PRED: 1 [30.0%] (false,exec)
<L1>:;
# MM_TrestleGoo_239 = V_MAY_DEF <MM_TrestleGoo_197>;
# L_2_240 = V_MAY_DEF <L_2_198>;
RTHooks__CheckLoadTracedRef (D.429_6);
# SUCC: 3 [100.0%] (fallthru,exec)
# BLOCK 3 freq:1000
# PRED: 43 [100.0%] (fallthru) 44 [100.0%] (fallthru) 2 [100.0%]
(fallthru,exec)
# L_2_187 = PHI <L_2_198(43), L_2_198(44), L_2_240(2)>;
# MM_TrestleGoo_177 = PHI <MM_TrestleGoo_197(43), MM_TrestleGoo_197(44),
MM_TrestleGoo_239(2)>;
<L2>:;
D.438_7 = &L_2 + 8;
D.439_8 = (<unnamed type> * *) D.438_7;
# VUSE <MM_TrestleGoo_177>;
D.440_11 = *D.428_5;
# L_2_199 = V_MAY_DEF <L_2_187>;
*D.439_8 = D.440_11;
D.441_15 = (<unnamed type> * *) D.440_11;
# VUSE <MM_TrestleGoo_177>;
# VUSE <L_2_199>;
D.442_16 = *D.441_15;
D.443_17 = (<unnamed type> * *) D.442_16;
# VUSE <MM_TrestleGoo_177>;
# VUSE <L_2_199>;
D.444_18 = *D.443_17;
D.445_19 = (<unnamed type> (*<T181>) (<unnamed type> *)) D.444_18;
# MM_TrestleGoo_200 = V_MAY_DEF <MM_TrestleGoo_177>;
# L_2_201 = V_MAY_DEF <L_2_199>;
D.445_19 (D.440_11);
# SUCC: 4 [100.0%] (fallthru,exec)
# BLOCK 4 freq:1000
# PRED: 3 [100.0%] (fallthru,exec)
<L3>:;
D.446_23 = &L_2 + 4;
D.447_24 = (int_32 *) D.446_23;
# L_2_202 = V_MAY_DEF <L_2_201>;
*D.447_24 = 6;
# MM_TrestleGoo_203 = V_MAY_DEF <MM_TrestleGoo_200>;
# L_2_204 = V_MAY_DEF <L_2_202>;
RTHooks__PushEFrame (&L_2);
# SUCC: 5 [100.0%] (fallthru,exec)
# BLOCK 5 freq:1000
# PRED: 4 [100.0%] (fallthru,exec)
# MM_TrestleGoo_205 = V_MAY_DEF <MM_TrestleGoo_203>;
# L_2_206 = V_MAY_DEF <L_2_204>;
D.403_26 = TrestleGoo__TrueChild (M3_BFdKo9_vv_25);
# SUCC: 6 [100.0%] (fallthru,exec)
# BLOCK 6 freq:1000
# PRED: 5 [100.0%] (fallthru,exec)
if (M3_Af40ku_ref_29 == 0B) goto <L45>; else goto <L4>;
# SUCC: 45 [19.0%] (true,exec) 7 [81.0%] (false,exec)
# BLOCK 45 freq:190
# PRED: 6 [19.0%] (true,exec)
<L45>:;
goto <bb 8> (<L5>);
# SUCC: 8 [100.0%] (fallthru)
# BLOCK 7 freq:810
# PRED: 6 [81.0%] (false,exec)
<L4>:;
D.449_156 = M3_Af40ku_ref_29 + ffffffffffffffff;
D.450_157 = (int_32 *) D.449_156;
# VUSE <MM_TrestleGoo_205>;
# VUSE <L_2_206>;
D.451_158 = *D.450_157;
D.452_159 = (word_32) D.451_158;
D.453_160 = D.452_159 << 1;
D.454_161 = D.453_160 >> 12;
D.403_162 = (<unnamed type> *) D.454_161;
# SUCC: 8 [100.0%] (fallthru,exec)
# BLOCK 8 freq:1000
# PRED: 45 [100.0%] (fallthru) 7 [100.0%] (fallthru,exec)
# D.403_2 = PHI <M3_Af40ku_ref_29(45), D.403_162(7)>;
<L5>:;
D.455_31 = (int_32) D.403_2;
M3_Cwb5VA_tc_32 = (word_32) D.455_31;
D.456_33 = &MM_TrestleGoo + 208;
D.457_34 = (int_32 *) D.456_33;
# VUSE <MM_TrestleGoo_205>;
D.458_35 = *D.457_34;
# MM_TrestleGoo_207 = V_MAY_DEF <MM_TrestleGoo_205>;
# L_2_208 = V_MAY_DEF <L_2_206>;
D.403_36 = VBT__GetProp (D.403_26, D.458_35);
# SUCC: 9 [100.0%] (fallthru,exec)
# BLOCK 9 freq:1000
# PRED: 8 [100.0%] (fallthru,exec)
if (D.403_36 == 0B) goto <L46>; else goto <L6>;
# SUCC: 46 [19.0%] (true,exec) 10 [81.0%] (false,exec)
# BLOCK 46 freq:190
# PRED: 9 [19.0%] (true,exec)
<L46>:;
goto <bb 12> (<L8>);
# SUCC: 12 [100.0%] (fallthru)
# BLOCK 10 freq:810
# PRED: 9 [81.0%] (false,exec)
<L6>:;
D.449_146 = D.403_36 + ffffffffffffffff;
D.450_147 = (int_32 *) D.449_146;
# VUSE <MM_TrestleGoo_207>;
# VUSE <L_2_208>;
D.451_148 = *D.450_147;
D.452_149 = (word_32) D.451_148;
D.453_150 = D.452_149 << 1;
D.454_151 = D.453_150 >> 12;
D.460_152 = (int_32) D.454_151;
# VUSE <MM_TrestleGoo_207>;
D.458_155 = *D.457_34;
if (D.460_152 == D.458_155) goto <L47>; else goto <L7>;
# SUCC: 47 [48.8%] (true,exec) 11 [51.2%] (false,exec)
# BLOCK 47 freq:395
# PRED: 10 [48.8%] (true,exec)
<L47>:;
goto <bb 12> (<L8>);
# SUCC: 12 [100.0%] (fallthru)
# BLOCK 11 freq:415
# PRED: 10 [51.2%] (false,exec)
<L7>:;
# MM_TrestleGoo_237 = V_MAY_DEF <MM_TrestleGoo_207>;
# L_2_238 = V_MAY_DEF <L_2_208>;
_m3_fault (1349);
# SUCC: 12 [100.0%] (fallthru,exec)
# BLOCK 12 freq:1000
# PRED: 46 [100.0%] (fallthru) 47 [100.0%] (fallthru) 11 [100.0%]
(fallthru,exec)
# L_2_188 = PHI <L_2_208(46), L_2_208(47), L_2_238(11)>;
# MM_TrestleGoo_178 = PHI <MM_TrestleGoo_207(46), MM_TrestleGoo_207(47),
MM_TrestleGoo_237(11)>;
<L8>:;
D.461_39 = &MM_TrestleGoo + 204;
D.462_40 = (<unnamed type> * *) D.461_39;
# VUSE <MM_TrestleGoo_178>;
D.463_41 = *D.462_40;
# MM_TrestleGoo_209 = V_MAY_DEF <MM_TrestleGoo_178>;
# L_2_210 = V_MAY_DEF <L_2_188>;
D.403_42 = RTHooks__Allocate (D.463_41);
# SUCC: 13 [100.0%] (fallthru,exec)
# BLOCK 13 freq:1000
# PRED: 12 [100.0%] (fallthru,exec)
D.465_45 = D.403_42 + 4;
D.466_46 = (<unnamed type> * *) D.465_45;
# MM_TrestleGoo_211 = V_MAY_DEF <MM_TrestleGoo_209>;
# L_2_212 = V_MAY_DEF <L_2_210>;
*D.466_46 = M3_Af40ku_ref_29;
D.467_48 = (<unnamed type> * *) D.403_42;
# MM_TrestleGoo_213 = V_MAY_DEF <MM_TrestleGoo_211>;
# L_2_214 = V_MAY_DEF <L_2_212>;
*D.467_48 = D.403_36;
# MM_TrestleGoo_215 = V_MAY_DEF <MM_TrestleGoo_213>;
# L_2_216 = V_MAY_DEF <L_2_214>;
VBT__PutProp (D.403_26, D.403_42);
goto <bb 34> (<L40>);
# SUCC: 34 [100.0%] (fallthru,exec)
# BLOCK 14 freq:9000
# PRED: 42 [100.0%] (fallthru,exec)
<L9>:;
# VUSE <MM_TrestleGoo_98>;
# VUSE <L_2_74>;
D.407_67 = *M3_BhAG13_e.1_50;
if (D.407_67 == 0B) goto <L48>; else goto <L10>;
# SUCC: 48 [19.0%] (true,exec) 15 [81.0%] (false,exec)
# BLOCK 48 freq:1710
# PRED: 14 [19.0%] (true,exec)
<L48>:;
goto <bb 17> (<L12>);
# SUCC: 17 [100.0%] (fallthru)
# BLOCK 15 freq:7290
# PRED: 14 [81.0%] (false,exec)
<L10>:;
D.469_130 = D.407_67 + ffffffffffffffff;
D.470_131 = (int_32 *) D.469_130;
# VUSE <MM_TrestleGoo_98>;
# VUSE <L_2_74>;
D.471_132 = *D.470_131;
D.472_133 = (word_32) D.471_132;
D.473_134 = D.472_133 << 22;
D.474_135 = D.473_134 >> 31;
if (D.474_135 == 0) goto <L49>; else goto <L11>;
# SUCC: 49 [70.0%] (true,exec) 16 [30.0%] (false,exec)
# BLOCK 49 freq:5103
# PRED: 15 [70.0%] (true,exec)
<L49>:;
goto <bb 17> (<L12>);
# SUCC: 17 [100.0%] (fallthru)
# BLOCK 16 freq:2187
# PRED: 15 [30.0%] (false,exec)
<L11>:;
# MM_TrestleGoo_233 = V_MAY_DEF <MM_TrestleGoo_98>;
# L_2_234 = V_MAY_DEF <L_2_74>;
RTHooks__CheckLoadTracedRef (D.407_67);
# SUCC: 17 [100.0%] (fallthru,exec)
# BLOCK 17 freq:9000
# PRED: 48 [100.0%] (fallthru) 49 [100.0%] (fallthru) 16 [100.0%]
(fallthru,exec)
# L_2_189 = PHI <L_2_74(48), L_2_74(49), L_2_234(16)>;
# MM_TrestleGoo_179 = PHI <MM_TrestleGoo_98(48), MM_TrestleGoo_98(49),
MM_TrestleGoo_233(16)>;
<L12>:;
D.477_68 = D.407_67 + 4;
D.478_69 = (<unnamed type> * *) D.477_68;
# VUSE <MM_TrestleGoo_179>;
# VUSE <L_2_189>;
D.406_70 = *D.478_69;
if (D.406_70 == 0B) goto <L50>; else goto <L13>;
# SUCC: 50 [19.0%] (true,exec) 18 [81.0%] (false,exec)
# BLOCK 18 freq:7290
# PRED: 17 [81.0%] (false,exec)
<L13>:;
D.479_122 = D.406_70 + ffffffffffffffff;
D.480_123 = (int_32 *) D.479_122;
# VUSE <MM_TrestleGoo_179>;
# VUSE <L_2_189>;
D.481_124 = *D.480_123;
D.482_125 = (word_32) D.481_124;
D.483_126 = D.482_125 << 22;
D.484_127 = D.483_126 >> 31;
if (D.484_127 == 0) goto <L51>; else goto <L14>;
# SUCC: 51 [70.0%] (true,exec) 19 [30.0%] (false,exec)
# BLOCK 19 freq:2187
# PRED: 18 [30.0%] (false,exec)
<L14>:;
# MM_TrestleGoo_231 = V_MAY_DEF <MM_TrestleGoo_179>;
# L_2_232 = V_MAY_DEF <L_2_189>;
RTHooks__CheckLoadTracedRef (D.406_70);
goto <bb 41> (<L41>);
# SUCC: 41 [100.0%] (fallthru,exec)
# BLOCK 50 freq:1710
# PRED: 17 [19.0%] (true,exec)
<L50>:;
# SUCC: 20 [100.0%] (fallthru)
# BLOCK 20 freq:9000
# PRED: 50 [100.0%] (fallthru) 41 [100.0%] (fallthru,exec)
# L_2_85 = PHI <L_2_189(50), L_2_55(41)>;
# MM_TrestleGoo_93 = PHI <MM_TrestleGoo_179(50), MM_TrestleGoo_76(41)>;
# D.403_3 = PHI <0B(50), D.403_121(41)>;
<L17>:;
D.455_72 = (int_32) D.403_3;
M3_Cwb5VA_tc.2_73 = (int_32) M3_Cwb5VA_tc_32;
if (D.455_72 != M3_Cwb5VA_tc.2_73) goto <L27>; else goto <L18>;
# SUCC: 30 [71.0%] (true,exec) 21 [29.0%] (false,exec)
# BLOCK 21 freq:2610
# PRED: 20 [29.0%] (false,exec)
<L18>:;
D.449_86 = M3_BhAG13_e_1 + ffffffffffffffff;
D.450_87 = (int_32 *) D.449_86;
# VUSE <MM_TrestleGoo_93>;
# VUSE <L_2_85>;
D.451_88 = *D.450_87;
D.452_89 = (word_32) D.451_88;
D.488_90 = D.452_89 << 21;
D.489_91 = D.488_90 >> 31;
if (D.489_91 != 0) goto <L52>; else goto <L19>;
# SUCC: 52 [70.0%] (true,exec) 22 [30.0%] (false,exec)
# BLOCK 52 freq:1827
# PRED: 21 [70.0%] (true,exec)
<L52>:;
goto <bb 23> (<L20>);
# SUCC: 23 [100.0%] (fallthru)
# BLOCK 22 freq:783
# PRED: 21 [30.0%] (false,exec)
<L19>:;
# MM_TrestleGoo_229 = V_MAY_DEF <MM_TrestleGoo_93>;
# L_2_230 = V_MAY_DEF <L_2_85>;
RTHooks__CheckStoreTraced (M3_BhAG13_e_1);
# SUCC: 23 [100.0%] (fallthru,exec)
# BLOCK 23 freq:2610
# PRED: 52 [100.0%] (fallthru) 22 [100.0%] (fallthru,exec)
# L_2_191 = PHI <L_2_85(52), L_2_230(22)>;
# MM_TrestleGoo_181 = PHI <MM_TrestleGoo_93(52), MM_TrestleGoo_229(22)>;
<L20>:;
# VUSE <MM_TrestleGoo_181>;
# VUSE <L_2_191>;
D.406_94 = *M3_BhAG13_e.1_50;
if (D.406_94 == 0B) goto <L53>; else goto <L21>;
# SUCC: 53 [19.0%] (true,exec) 24 [81.0%] (false,exec)
# BLOCK 53 freq:496
# PRED: 23 [19.0%] (true,exec)
<L53>:;
goto <bb 26> (<L23>);
# SUCC: 26 [100.0%] (fallthru)
# BLOCK 24 freq:2114
# PRED: 23 [81.0%] (false,exec)
<L21>:;
D.479_107 = D.406_94 + ffffffffffffffff;
D.480_108 = (int_32 *) D.479_107;
# VUSE <MM_TrestleGoo_181>;
# VUSE <L_2_191>;
D.481_109 = *D.480_108;
D.482_110 = (word_32) D.481_109;
D.483_111 = D.482_110 << 22;
D.484_112 = D.483_111 >> 31;
if (D.484_112 == 0) goto <L54>; else goto <L22>;
# SUCC: 54 [70.0%] (true,exec) 25 [30.0%] (false,exec)
# BLOCK 54 freq:1480
# PRED: 24 [70.0%] (true,exec)
<L54>:;
goto <bb 26> (<L23>);
# SUCC: 26 [100.0%] (fallthru)
# BLOCK 25 freq:634
# PRED: 24 [30.0%] (false,exec)
<L22>:;
# MM_TrestleGoo_227 = V_MAY_DEF <MM_TrestleGoo_181>;
# L_2_228 = V_MAY_DEF <L_2_191>;
RTHooks__CheckLoadTracedRef (D.406_94);
# SUCC: 26 [100.0%] (fallthru,exec)
# BLOCK 26 freq:2610
# PRED: 53 [100.0%] (fallthru) 54 [100.0%] (fallthru) 25 [100.0%]
(fallthru,exec)
# L_2_192 = PHI <L_2_191(53), L_2_191(54), L_2_228(25)>;
# MM_TrestleGoo_182 = PHI <MM_TrestleGoo_181(53), MM_TrestleGoo_181(54),
MM_TrestleGoo_227(25)>;
<L23>:;
D.491_95 = (<unnamed type> * *) D.406_94;
# VUSE <MM_TrestleGoo_182>;
# VUSE <L_2_192>;
D.407_96 = *D.491_95;
if (D.407_96 == 0B) goto <L55>; else goto <L24>;
# SUCC: 55 [19.0%] (true,exec) 27 [81.0%] (false,exec)
# BLOCK 55 freq:496
# PRED: 26 [19.0%] (true,exec)
<L55>:;
goto <bb 29> (<L26>);
# SUCC: 29 [100.0%] (fallthru)
# BLOCK 27 freq:2114
# PRED: 26 [81.0%] (false,exec)
<L24>:;
D.469_99 = D.407_96 + ffffffffffffffff;
D.470_100 = (int_32 *) D.469_99;
# VUSE <MM_TrestleGoo_182>;
# VUSE <L_2_192>;
D.471_101 = *D.470_100;
D.472_102 = (word_32) D.471_101;
D.473_103 = D.472_102 << 22;
D.474_104 = D.473_103 >> 31;
if (D.474_104 == 0) goto <L56>; else goto <L25>;
# SUCC: 56 [70.0%] (true,exec) 28 [30.0%] (false,exec)
# BLOCK 56 freq:1480
# PRED: 27 [70.0%] (true,exec)
<L56>:;
goto <bb 29> (<L26>);
# SUCC: 29 [100.0%] (fallthru)
# BLOCK 28 freq:634
# PRED: 27 [30.0%] (false,exec)
<L25>:;
# MM_TrestleGoo_225 = V_MAY_DEF <MM_TrestleGoo_182>;
# L_2_226 = V_MAY_DEF <L_2_192>;
RTHooks__CheckLoadTracedRef (D.407_96);
# SUCC: 29 [100.0%] (fallthru,exec)
# BLOCK 29 freq:2610
# PRED: 55 [100.0%] (fallthru) 56 [100.0%] (fallthru) 28 [100.0%]
(fallthru,exec)
# L_2_193 = PHI <L_2_192(55), L_2_192(56), L_2_226(28)>;
# MM_TrestleGoo_183 = PHI <MM_TrestleGoo_182(55), MM_TrestleGoo_182(56),
MM_TrestleGoo_225(28)>;
<L26>:;
# MM_TrestleGoo_223 = V_MAY_DEF <MM_TrestleGoo_183>;
# L_2_224 = V_MAY_DEF <L_2_193>;
*M3_BhAG13_e.1_50 = D.407_96;
goto <bb 33> (<L31>);
# SUCC: 33 [100.0%] (fallthru,exec)
# BLOCK 30 freq:6390
# PRED: 20 [71.0%] (true,exec)
<L27>:;
# VUSE <MM_TrestleGoo_93>;
# VUSE <L_2_85>;
D.419_75 = *M3_BhAG13_e.1_50;
if (D.419_75 == 0B) goto <L57>; else goto <L28>;
# SUCC: 57 [19.0%] (true,exec) 31 [81.0%] (false,exec)
# BLOCK 57 freq:1214
# PRED: 30 [19.0%] (true,exec)
<L57>:;
goto <bb 33> (<L31>);
# SUCC: 33 [100.0%] (fallthru)
# BLOCK 31 freq:5176
# PRED: 30 [81.0%] (false,exec)
<L28>:;
D.493_77 = D.419_75 + ffffffffffffffff;
D.494_78 = (int_32 *) D.493_77;
# VUSE <MM_TrestleGoo_93>;
# VUSE <L_2_85>;
D.495_79 = *D.494_78;
D.496_80 = (word_32) D.495_79;
D.497_81 = D.496_80 << 22;
D.498_82 = D.497_81 >> 31;
if (D.498_82 == 0) goto <L58>; else goto <L29>;
# SUCC: 58 [70.0%] (true,exec) 32 [30.0%] (false,exec)
# BLOCK 58 freq:3623
# PRED: 31 [70.0%] (true,exec)
<L58>:;
goto <bb 33> (<L31>);
# SUCC: 33 [100.0%] (fallthru)
# BLOCK 32 freq:1553
# PRED: 31 [30.0%] (false,exec)
<L29>:;
# MM_TrestleGoo_221 = V_MAY_DEF <MM_TrestleGoo_93>;
# L_2_222 = V_MAY_DEF <L_2_85>;
RTHooks__CheckLoadTracedRef (D.419_75);
# SUCC: 33 [100.0%] (fallthru,exec)
# BLOCK 33 freq:9000
# PRED: 32 [100.0%] (fallthru,exec) 29 [100.0%] (fallthru,exec) 58 [100.0%]
(fallthru) 57 [100.0%] (fallthru)
# L_2_184 = PHI <L_2_222(32), L_2_224(29), L_2_85(58), L_2_85(57)>;
# MM_TrestleGoo_194 = PHI <MM_TrestleGoo_221(32), MM_TrestleGoo_223(29),
MM_TrestleGoo_93(58), MM_TrestleGoo_93(57)>;
# M3_BhAG13_e_65 = PHI <D.419_75(32), M3_BhAG13_e_1(29), D.419_75(58),
D.419_75(57)>;
<L31>:;
<L32>:;
# SUCC: 34 [100.0%] (fallthru,dfs_back,exec)
# BLOCK 34 freq:10000
# PRED: 33 [100.0%] (fallthru,dfs_back,exec) 13 [100.0%] (fallthru,exec)
# L_2_195 = PHI <L_2_184(33), L_2_216(13)>;
# MM_TrestleGoo_185 = PHI <MM_TrestleGoo_194(33), MM_TrestleGoo_215(13)>;
# M3_BhAG13_e_1 = PHI <M3_BhAG13_e_65(33), D.403_42(13)>;
<L40>:;
M3_BhAG13_e.1_50 = (<unnamed type> * *) M3_BhAG13_e_1;
# VUSE <MM_TrestleGoo_185>;
# VUSE <L_2_195>;
D.419_51 = *M3_BhAG13_e.1_50;
if (D.419_51 == 0B) goto <L35>; else goto <L33>;
# SUCC: 37 [10.0%] (loop_exit,true,exec) 35 [90.0%] (false,exec)
# BLOCK 35 freq:9000
# PRED: 34 [90.0%] (false,exec)
<L33>:;
D.493_138 = D.419_51 + ffffffffffffffff;
D.494_139 = (int_32 *) D.493_138;
# VUSE <MM_TrestleGoo_185>;
# VUSE <L_2_195>;
D.495_140 = *D.494_139;
D.496_141 = (word_32) D.495_140;
D.497_142 = D.496_141 << 22;
D.498_143 = D.497_142 >> 31;
if (D.498_143 == 0) goto <L59>; else goto <L34>;
# SUCC: 59 [70.0%] (true,exec) 36 [30.0%] (false,exec)
# BLOCK 36 freq:2700
# PRED: 35 [30.0%] (false,exec)
<L34>:;
# MM_TrestleGoo_235 = V_MAY_DEF <MM_TrestleGoo_185>;
# L_2_236 = V_MAY_DEF <L_2_195>;
RTHooks__CheckLoadTracedRef (D.419_51);
goto <bb 42> (<L42>);
# SUCC: 42 [100.0%] (fallthru,exec)
# BLOCK 37 freq:1000
# PRED: 34 [10.0%] (loop_exit,true,exec)
# L_2_196 = PHI <L_2_195(34)>;
# MM_TrestleGoo_186 = PHI <MM_TrestleGoo_185(34)>;
<L35>:;
# SUCC: 38 [100.0%] (fallthru,exec)
# BLOCK 38 freq:1000
# PRED: 37 [100.0%] (fallthru,exec)
<L38>:;
L_2.3_52 = (<unnamed type> * *) &L_2;
# VUSE <L_2_196>;
D.502_53 = *L_2.3_52;
# MM_TrestleGoo_217 = V_MAY_DEF <MM_TrestleGoo_186>;
# L_2_218 = V_MAY_DEF <L_2_196>;
RTHooks__PopEFrame (D.502_53);
# SUCC: 39 [100.0%] (fallthru,exec)
# BLOCK 39 freq:1000
# PRED: 38 [100.0%] (fallthru,exec)
# VUSE <L_2_218>;
D.440_56 = *D.439_8;
D.441_57 = (<unnamed type> * *) D.440_56;
# VUSE <MM_TrestleGoo_217>;
# VUSE <L_2_218>;
D.442_58 = *D.441_57;
D.503_59 = D.442_58 + 4;
D.504_60 = (<unnamed type> * *) D.503_59;
# VUSE <MM_TrestleGoo_217>;
# VUSE <L_2_218>;
D.505_61 = *D.504_60;
D.506_62 = (<unnamed type> (*<T181>) (<unnamed type> *)) D.505_61;
# MM_TrestleGoo_219 = V_MAY_DEF <MM_TrestleGoo_217>;
# L_2_220 = V_MAY_DEF <L_2_218>;
D.506_62 (D.440_56);
# SUCC: 40 [100.0%] (fallthru,exec)
# BLOCK 40 freq:1000
# PRED: 39 [100.0%] (fallthru,exec)
<L39>:;
return;
# SUCC: EXIT [100.0%]
# BLOCK 51 freq:5103
# PRED: 18 [70.0%] (true,exec)
<L51>:;
# SUCC: 41 [100.0%] (fallthru)
# BLOCK 41 freq:7290
# PRED: 19 [100.0%] (fallthru,exec) 51 [100.0%] (fallthru)
# L_2_55 = PHI <L_2_232(19), L_2_189(51)>;
# MM_TrestleGoo_76 = PHI <MM_TrestleGoo_231(19), MM_TrestleGoo_179(51)>;
<L41>:;
# VUSE <MM_TrestleGoo_76>;
# VUSE <L_2_55>;
D.451_117 = *D.480_123;
D.452_118 = (word_32) D.451_117;
D.453_119 = D.452_118 << 1;
D.454_120 = D.453_119 >> 12;
D.403_121 = (<unnamed type> *) D.454_120;
goto <bb 20> (<L17>);
# SUCC: 20 [100.0%] (fallthru,exec)
# BLOCK 59 freq:6300
# PRED: 35 [70.0%] (true,exec)
<L59>:;
# SUCC: 42 [100.0%] (fallthru)
# BLOCK 42 freq:9000
# PRED: 36 [100.0%] (fallthru,exec) 59 [100.0%] (fallthru)
# L_2_74 = PHI <L_2_236(36), L_2_195(59)>;
# MM_TrestleGoo_98 = PHI <MM_TrestleGoo_235(36), MM_TrestleGoo_185(59)>;
<L42>:;
goto <bb 14> (<L9>);
# SUCC: 14 [100.0%] (fallthru,exec)
}
Here is the gdb trace showing relevant information for the phi.
(gdb) p $15
$37 = (tree) 0x42591600
(gdb) info break
Num Type Disp Enb Address What
1 breakpoint keep y 0x00141818 in create_phi_node at
../../gcc/gcc/tree-phinodes.c:362
stop only if phi == $15
breakpoint already hit 2 times
3 breakpoint keep y 0x00141184 in resize_phi_node at
../../gcc/gcc/tree-phinodes.c:271
stop only if *phi == $15
breakpoint already hit 1 time
4 breakpoint keep y 0x00141000 in release_phi_node at
../../gcc/gcc/tree-phinodes.c:245
stop only if phi == $15
breakpoint already hit 1 time
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /Users/hosking/cm3/m3-sys/m3cc/bug-28798/m3cgc1 -O1
-ftree-pre -fdump-tree-crited-vops-details-blocks-stats TrestleGoo.mc -o
TrestleGoo.ms
TrestleGoo__Alias TrestleGoo__TrueChild TrestleGoo__PutProp
TrestleGoo__GetProp TrestleGoo__RemProp TrestleGoo__Next TrestleGoo_M3
Analyzing compilation unitPerforming intraprocedural optimizations
Assembling functions:
TrestleGoo_M3 _m3_fault TrestleGoo__TrueChild TrestleGoo__Next
TrestleGoo__GetProp TrestleGoo__Alias TrestleGoo__RemProp TrestleGoo__PutProp
Breakpoint 1, create_phi_node (var=0x42448ae0, bb=0x4249a840) at
../../gcc/gcc/tree-phinodes.c:362
(gdb) c
Continuing.
Breakpoint 4, release_phi_node (phi=0x42591600) at
../../gcc/gcc/tree-phinodes.c:245
(gdb) c
Continuing.
Breakpoint 1, create_phi_node (var=0x4259d960, bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:362
(gdb) where
#0 create_phi_node (var=0x4259d960, bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:362
#1 0x00342800 in insert_aux (block=0x4249ae40) at
../../gcc/gcc/tree-ssa-pre.c:1706
#2 0x00342a78 in insert_aux (block=0x4249a900) at
../../gcc/gcc/tree-ssa-pre.c:1915
#3 0x00342a78 in insert_aux (block=0x4249a720) at
../../gcc/gcc/tree-ssa-pre.c:1915
#4 0x00342a78 in insert_aux (block=0x4249a600) at
../../gcc/gcc/tree-ssa-pre.c:1915
#5 0x00342a78 in insert_aux (block=0x425868a0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#6 0x00342a78 in insert_aux (block=0x4249aea0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#7 0x00342a78 in insert_aux (block=0x425867e0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#8 0x00342a78 in insert_aux (block=0x4249a540) at
../../gcc/gcc/tree-ssa-pre.c:1915
#9 0x00342a78 in insert_aux (block=0x4249a4e0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#10 0x00342a78 in insert_aux (block=0x4249a3c0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#11 0x00342a78 in insert_aux (block=0x4249a360) at
../../gcc/gcc/tree-ssa-pre.c:1915
#12 0x00342a78 in insert_aux (block=0x4249a2a0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#13 0x00342a78 in insert_aux (block=0x4249a240) at
../../gcc/gcc/tree-ssa-pre.c:1915
#14 0x00342a78 in insert_aux (block=0x4249a1e0) at
../../gcc/gcc/tree-ssa-pre.c:1915
#15 0x00342a78 in insert_aux (block=0x4249a180) at
../../gcc/gcc/tree-ssa-pre.c:1915
#16 0x00342a78 in insert_aux (block=0x4249a060) at
../../gcc/gcc/tree-ssa-pre.c:1915
#17 0x00342a78 in insert_aux (block=0x4248ef60) at
../../gcc/gcc/tree-ssa-pre.c:1915
#18 0x00343fd4 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:1937
#19 0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#20 0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#21 0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#22 0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#23 0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#24 0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#25 0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#26 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#27 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#28 0x00001f24 in _start (argc=7, argv=0xbffff1f8, envp=0xbffff218) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#29 0x00001dcc in start ()
(gdb) c
Continuing.
Breakpoint 3, resize_phi_node (phi=0x4249ae68, len=9) at
../../gcc/gcc/tree-phinodes.c:271
(gdb) where
#0 resize_phi_node (phi=0x4249ae68, len=9) at
../../gcc/gcc/tree-phinodes.c:271
#1 0x001415e8 in reserve_phi_args_for_new_edge (bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:325
#2 0x001fd8b0 in unchecked_make_edge (src=0x4259d9c0, dst=0x4249ae40,
flags=1112124996) at ../../gcc/gcc/cfg.c:272
#3 0x002414fc in tree_split_edge (edge_in=0x424a1270) at
../../gcc/gcc/tree-cfg.c:3117
#4 0x00261bcc in split_edge (e=0x4258c460) at ../../gcc/gcc/cfghooks.c:407
#5 0x002445b8 in tree_find_edge_insert_loc (e=0x424a1270, bsi=0xbfffec88,
new_bb=0x0) at ../../gcc/gcc/tree-cfg.c:2975
#6 0x00244764 in bsi_commit_one_edge_insert (e=0x4249ae68, new_bb=0x9) at
../../gcc/gcc/tree-cfg.c:3016
#7 0x002466c8 in bsi_commit_edge_inserts () at ../../gcc/gcc/tree-cfg.c:2997
#8 0x00344098 in execute_pre (do_fre=0 '\0') at
../../gcc/gcc/tree-ssa-pre.c:2731
#9 0x002260b8 in execute_one_pass (pass=0x4ed660) at
../../gcc/gcc/passes.c:827
#10 0x00226188 in execute_pass_list (pass=0x4ed660) at
../../gcc/gcc/passes.c:859
#11 0x002261a0 in execute_pass_list (pass=0x4ec21c) at
../../gcc/gcc/passes.c:860
#12 0x00153fa4 in tree_rest_of_compilation (fndecl=0x42443580) at
../../gcc/gcc/tree-optimize.c:419
#13 0x0000497c in m3_expand_function (fndecl=0x42443580) at
../../gcc/gcc/m3cg/parse.c:848
#14 0x00052784 in cgraph_expand_function (node=0x424501c0) at
../../gcc/gcc/cgraphunit.c:1055
#15 0x00052fc8 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1121
#16 0x000130c0 in m3_parse_file (xx=0) at ../../gcc/gcc/m3cg/parse.c:4397
#17 0x00036674 in toplev_main (argc=1079409344, argv=0x40567bcc) at
../../gcc/gcc/toplev.c:991
#18 0x00001f24 in _start (argc=7, argv=0xbffff1f8, envp=0xbffff218) at
/SourceCache/Csu/Csu-58.1.1/crt.c:272
#19 0x00001dcc in start ()
(gdb) up
#1 0x001415e8 in reserve_phi_args_for_new_edge (bb=0x4249ae40) at
../../gcc/gcc/tree-phinodes.c:325
(gdb)
#2 0x001fd8b0 in unchecked_make_edge (src=0x4259d9c0, dst=0x4249ae40,
flags=1112124996) at ../../gcc/gcc/cfg.c:272
(gdb)
#3 0x002414fc in tree_split_edge (edge_in=0x424a1270) at
../../gcc/gcc/tree-cfg.c:3117
(gdb) p *(edge_in->src)
$44 = {
stmt_list = 0x42499de0,
preds = 0x424a0840,
succs = 0x424a0860,
aux = 0x41600770,
loop_father = 0x41607f30,
dom = {0x428135d0, 0x428129a0},
prev_bb = 0x4259d660,
next_bb = 0x4259d9c0,
il = {
rtl = 0x0
},
phi_nodes = 0x0,
predictions = 0x0,
count = 0,
index = 32,
loop_depth = 1,
frequency = 1553,
flags = 6
}
(gdb) p *(edge_in->dest)
$45 = {
stmt_list = 0x42499e20,
preds = 0x4258c450,
succs = 0x42595880,
aux = 0x41600790,
loop_father = 0x41607f30,
dom = {0x428136c0, 0x428129c8},
prev_bb = 0x4259d9c0,
next_bb = 0x425867e0,
il = {
rtl = 0x0
},
phi_nodes = 0x42591600,
predictions = 0x0,
count = 0,
index = 33,
loop_depth = 1,
frequency = 9000,
flags = 6
}
(gdb) c
Continuing.
Breakpoint 4, release_phi_node (phi=0x42591600) at
../../gcc/gcc/tree-phinodes.c:245
(gdb) c
Continuing.
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x00141ca8 in remove_phi_node (phi=0x42591600, prev=0x0) at
../../gcc/gcc/tree-phinodes.c:454
(gdb)
(In reply to comment #14)
> Subject: Re: remove_phi_node attempts removal
> of a phi node resized by resize_phi_node
>
> hosking at cs dot purdue dot edu wrote:
> > ------- Comment #13 from hosking at cs dot purdue dot edu 2006-08-24 15:27 -------
> > Is this enough?
> >
> > Here is the dump output, followed by stack traces at the resize and remove
> > points (the remove goes on to fail).
>
> So, this edge can't exist.
> Note:
>
> > Its src is:
> >
> > (gdb) p *(e->src)
> > $12 = {
> > index = 0,
> > }
> >
> > Its dest is:
> >
> > (gdb) p *(e->dest)
> > $13 = {
> > index = 0,
> > }
> >
>
> It claims to be an edge from block 0 to block 0, but your according to
> your dump, block 0 is not a successor of block 0 (IE it is not a self loop).
>
> --Dan
>
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28798