------- 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