This is the mail archive of the gcc-patches@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]

Re: [lno, ?tree-ssa] Fix coalesce_tpa_members


Hello,

> > I have encountered the following problem during lno-branch testing, very
> > probably it also applies to tree-ssa branch (although I do not have a
> > testcase for it):
> > 
> > Suppose you have a function with parameter s and the following partitions
> > 
> > s
> > s_1
> > s_2
> > 
> > in coalesce_tpa_members, suppose p_1 is the partition s_1.  In the first
> > iteration, it is coalesced with partition s, and s is made the root
> > variable of the partition; var however still is s_1.  In the second
> > iteration it is coalesced with s_2, and since s_1 is an ordinary ssa
> > name, the root variable of the created partition is s_2 (i.e. it is not
> > replaced by s).
> > 
> > As a result, s is replaced with a temporary variable everywhere, thus
> > making the parameter unused and causing misscompilation.  This patch
> > fixes it by setting the var to point always to the root of the first
> > partition.
> > 
> 
> I believe you are correct, and I suspect it is finally showing up
> because of the addition of the coalesce list, which changes some of the
> numerical orderings we'd see. Funny how something like that can go on
> forever....
> 
> Can you send me a .optimized detail dump?

here it is.

Zdenek

;; Function Perl_intuit_more (Perl_intuit_more)

Perl_intuit_more (s)
{
  char * s.352;
  char * ruatmp.351;
  char * fgotmp.350;
  char * ivtmp.348;
  char * ruatmp.341;
  char * fgotmp.340;
  char * ivtmp.338;
  char pretmp.323;
  char * pretmp.322;
  char pretmp.321;
  char * send;
  unsigned char last_un_char;
  unsigned char un_char;
  char seen[256];
  int weight;
  char * T.319;
  unsigned char T.318;
  char T.317;
  struct OP * PL_lex_inpat.316;
  char T.315;

  # BLOCK 0
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  T.315_1 = *s_5;
  if (T.315_1 != 123) goto <L0>; else goto <L2>;
  # SUCC: 3 [29.0%]  (false,exec) 1 [71.0%]  (true,exec)

  # BLOCK 1
  # PRED: 0 [71.0%]  (true,exec)
<L0>:;
  if (T.315_1 != 91) goto <L1>; else goto <L2>;
  # SUCC: 3 [16.8%]  (false,exec) 2 [83.2%]  (true,exec)

  # BLOCK 2
  # PRED: 1 [83.2%]  (true,exec)
<L1>:;
  return 0;
  # SUCC: EXIT [100.0%] 

  # BLOCK 3
  # PRED: 1 [16.8%]  (false,exec) 0 [29.0%]  (false,exec)
<L2>:;
  PL_lex_inpat.316_7 = PL_lex_inpat;
  if (PL_lex_inpat.316_7 == 0B) goto <L4>; else goto <L5>;
  # SUCC: 5 [67.7%]  (false,exec) 4 [32.3%]  (true,exec)

  # BLOCK 4
  # PRED: 3 [32.3%]  (true,exec)
<L4>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 5
  # PRED: 3 [67.7%]  (false,exec)
<L5>:;
  if (T.315_1 == 123) goto <L6>; else goto <L19>;
  # SUCC: 16 [51.2%]  (false,exec) 6 [48.8%]  (true,exec)

  # BLOCK 6
  # PRED: 5 [48.8%]  (true,exec)
<L6>:;
  s.352_100 = s_5 + 1B;
  T.315_101 = *s.352_100;
  T.317_102 = T.315_101 - 48;
  T.318_103 = (unsigned char)T.317_102;
  if (T.318_103 > 9) goto <L7>; else goto <L37>;
  # SUCC: 8 [33.0%]  (false,exec) 7 [67.0%]  (true,exec)

  # BLOCK 7
  # PRED: 6 [67.0%]  (true,exec)
<L7>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 8
  # PRED: 6 [33.0%]  (false,exec)
<L37>:;
  ivtmp.348_93 = s_5 + 2B;
  # SUCC: 9 [100.0%]  (fallthru)

  # BLOCK 9
  # PRED: 9 [89.0%]  (true,exec) 8 [100.0%]  (fallthru)
  # ivtmp.348_91 = PHI <ivtmp.348_93(8), ivtmp.348_92(9)>;
<L29>:;
  s_104 = NON_LVALUE_EXPR <ivtmp.348_91>;
  T.315_105 = *s_104;
  T.317_106 = T.315_105 - 48;
  T.318_107 = (unsigned char)T.317_106;
  ivtmp.348_92 = ivtmp.348_91 + 1B;
  if (T.318_107 <= 9) goto <L29>; else goto <L11>;
  # SUCC: 10 [11.0%]  (false,exec) 9 [89.0%]  (true,exec)

  # BLOCK 10
  # PRED: 9 [11.0%]  (false,exec)
<L11>:;
  if (T.315_105 == 44) goto <L12>; else goto <L27>;
  # SUCC: 20 [71.0%]  (false,exec) 11 [29.0%]  (true,exec)

  # BLOCK 11
  # PRED: 10 [29.0%]  (true,exec)
<L12>:;
  s_116 = s_104 + 1B;
  goto <bb 20> (<L27>);
  # SUCC: 20 [100.0%]  (fallthru,exec)

  # BLOCK 12
  # PRED: 12 [89.0%]  (true,exec) 21 [100.0%]  (fallthru)
  # ivtmp.338_86 = PHI <ivtmp.338_88(21), ivtmp.338_87(12)>;
<L30>:;
  s_111 = NON_LVALUE_EXPR <ivtmp.338_86>;
  T.315_112 = *s_111;
  T.317_113 = T.315_112 - 48;
  T.318_114 = (unsigned char)T.317_113;
  ivtmp.338_87 = ivtmp.338_86 + 1B;
  if (T.318_114 <= 9) goto <L30>; else goto <L16>;
  # SUCC: 13 [11.0%]  (false,exec) 12 [89.0%]  (true,exec)

  # BLOCK 13
  # PRED: 20 [50.0%]  (false,exec) 12 [11.0%]  (false,exec)
  # s_41 = PHI <s_40(20), s_111(12)>;
<L16>:;
  T.315_115 = *s_41;
  if (T.315_115 == 125) goto <L17>; else goto <L18>;
  # SUCC: 15 [71.0%]  (false,exec) 14 [29.0%]  (true,exec)

  # BLOCK 14
  # PRED: 13 [29.0%]  (true,exec)
<L17>:;
  return 0;
  # SUCC: EXIT [100.0%] 

  # BLOCK 15
  # PRED: 13 [71.0%]  (false,exec)
<L18>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 16
  # PRED: 5 [51.2%]  (false,exec)
<L19>:;
  s.352_3 = s_5 + 1B;
  T.319_12 = strchr (s.352_3, 93);
  if (s.352_3 < T.319_12) goto <L52>; else goto <L22>;
  # SUCC: 17 [33.0%]  (true,exec) 19 [67.0%]  (false,exec)

  # BLOCK 17
  # PRED: 16 [33.0%]  (true,exec)
<L52>:;
  s_97 = s.352_3;
  # SUCC: 18 [100.0%]  (fallthru)

  # BLOCK 18
  # PRED: 18 [89.0%]  (true,exec) 17 [100.0%]  (fallthru)
  # s_4 = PHI <s_97(17), s_98(18)>;
<L48>:;
  s_98 = s_4 + 1B;
  s.352_99 = NON_LVALUE_EXPR <s_98>;
  if (s.352_99 < T.319_12) goto <L48>; else goto <L22>;
  # SUCC: 19 [11.0%]  (false,exec) 18 [89.0%]  (true,exec)

  # BLOCK 19
  # PRED: 18 [11.0%]  (false,exec) 16 [67.0%]  (false,exec)
<L22>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 20
  # PRED: 10 [71.0%]  (false,exec) 11 [100.0%]  (fallthru,exec)
  # s_40 = PHI <s_104(10), s_116(11)>;
<L27>:;
  T.315_108 = *s_40;
  T.317_109 = T.315_108 - 48;
  T.318_110 = (unsigned char)T.317_109;
  if (T.318_110 <= 9) goto <L46>; else goto <L16>;
  # SUCC: 21 [50.0%]  (true,exec) 13 [50.0%]  (false,exec)

  # BLOCK 21
  # PRED: 20 [50.0%]  (true,exec)
<L46>:;
  ivtmp.338_88 = s_40 + 1B;
  goto <bb 12> (<L30>);
  # SUCC: 12 [100.0%]  (fallthru)

}



Partition map 

Partition 0 (T.315_1 - 1 )
Partition 1 (s.352_3 - 3 )
Partition 2 (s_4 - 4 )
Partition 3 (s_5 - 5 )
Partition 4 (<retval>_14 - 14 )
Partition 5 (<retval>_31 - 31 )
Partition 6 (<retval>_32 - 32 )
Partition 7 (<retval>_36 - 36 )
Partition 8 (<retval>_37 - 37 )
Partition 9 (<retval>_39 - 39 )
Partition 10 (s_40 - 40 )
Partition 11 (s_41 - 41 )
Partition 12 (ivtmp.338_86 - 86 )
Partition 13 (ivtmp.338_87 - 87 )
Partition 14 (ivtmp.338_88 - 88 )
Partition 15 (ivtmp.348_91 - 91 )
Partition 16 (ivtmp.348_92 - 92 )
Partition 17 (ivtmp.348_93 - 93 )
Partition 18 (s_97 - 97 )
Partition 19 (s_98 - 98 )
Partition 20 (s.352_99 - 99 )
Partition 21 (s.352_100 - 100 )
Partition 22 (T.315_101 - 101 )
Partition 23 (T.317_102 - 102 )
Partition 24 (T.318_103 - 103 )
Partition 25 (s_104 - 104 )
Partition 26 (T.315_105 - 105 )
Partition 27 (T.317_106 - 106 )
Partition 28 (T.318_107 - 107 )
Partition 29 (T.315_108 - 108 )
Partition 30 (T.317_109 - 109 )
Partition 31 (T.318_110 - 110 )
Partition 32 (s_111 - 111 )
Partition 33 (T.315_112 - 112 )
Partition 34 (T.317_113 - 113 )
Partition 35 (T.318_114 - 114 )
Partition 36 (T.315_115 - 115 )
Partition 37 (s_116 - 116 )

Before sorting:
Coalesce List:
[s.352_3] - s_97(1), 
[s_4] - s_97(1), s_98(1), 
[<retval>_14] - <retval>_31(1), <retval>_32(1), <retval>_36(1), <retval>_37(1), <retval>_39(1), 
[s_40] - s_41(1), s_104(1), s_116(1), 
[s_41] - s_111(1), 
[ivtmp.338_86] - ivtmp.338_87(1), ivtmp.338_88(1), 
[ivtmp.348_91] - ivtmp.348_92(1), ivtmp.348_93(1), 

After sorting:
Sorted Coalesce list:
(1) ivtmp.348_91 : ivtmp.348_92
(1) ivtmp.348_91 : ivtmp.348_93
(1) ivtmp.338_86 : ivtmp.338_87
(1) ivtmp.338_86 : ivtmp.338_88
(1) s_41 : s_111
(1) s_40 : s_41
(1) s_40 : s_104
(1) s_40 : s_116
(1) <retval>_14 : <retval>_31
(1) <retval>_14 : <retval>_32
(1) <retval>_14 : <retval>_36
(1) <retval>_14 : <retval>_37
(1) <retval>_14 : <retval>_39
(1) s_4 : s_97
(1) s_4 : s_98
(1) s.352_3 : s_97
Must coalesce s_5 with the root variable s.

Partition map 

Partition 0 (T.315_1 - 1 )
Partition 1 (s.352_3 - 3 )
Partition 2 (s_4 - 4 )
Partition 3 (s - 5 )
Partition 4 (<retval>_14 - 14 )
Partition 5 (<retval>_31 - 31 )
Partition 6 (<retval>_32 - 32 )
Partition 7 (<retval>_36 - 36 )
Partition 8 (<retval>_37 - 37 )
Partition 9 (<retval>_39 - 39 )
Partition 10 (s_40 - 40 )
Partition 11 (s_41 - 41 )
Partition 12 (ivtmp.338_86 - 86 )
Partition 13 (ivtmp.338_87 - 87 )
Partition 14 (ivtmp.338_88 - 88 )
Partition 15 (ivtmp.348_91 - 91 )
Partition 16 (ivtmp.348_92 - 92 )
Partition 17 (ivtmp.348_93 - 93 )
Partition 18 (s_97 - 97 )
Partition 19 (s_98 - 98 )
Partition 20 (s.352_99 - 99 )
Partition 21 (s.352_100 - 100 )
Partition 22 (T.315_101 - 101 )
Partition 23 (T.317_102 - 102 )
Partition 24 (T.318_103 - 103 )
Partition 25 (s_104 - 104 )
Partition 26 (T.315_105 - 105 )
Partition 27 (T.317_106 - 106 )
Partition 28 (T.318_107 - 107 )
Partition 29 (T.315_108 - 108 )
Partition 30 (T.317_109 - 109 )
Partition 31 (T.318_110 - 110 )
Partition 32 (s_111 - 111 )
Partition 33 (T.315_112 - 112 )
Partition 34 (T.317_113 - 113 )
Partition 35 (T.318_114 - 114 )
Partition 36 (T.315_115 - 115 )
Partition 37 (s_116 - 116 )

Coalesce list: (15)ivtmp.348_91 & (16)ivtmp.348_92 [map: 15, 16] : Success -> 15
Coalesce list: (15)ivtmp.348_91 & (17)ivtmp.348_93 [map: 15, 17] : Success -> 15
Coalesce list: (12)ivtmp.338_86 & (13)ivtmp.338_87 [map: 12, 13] : Success -> 12
Coalesce list: (12)ivtmp.338_86 & (14)ivtmp.338_88 [map: 12, 14] : Success -> 12
Coalesce list: (11)s_41 & (32)s_111 [map: 11, 32] : Success -> 11
Coalesce list: (10)s_40 & (11)s_41 [map: 10, 11] : Success -> 11
Coalesce list: (10)s_41 & (25)s_104 [map: 11, 25] : Success -> 11
Coalesce list: (10)s_41 & (37)s_116 [map: 11, 37] : Success -> 11
Coalesce list: (4)<retval>_14 & (5)<retval>_31 [map: 4, 5] : Success -> 4
Coalesce list: (4)<retval>_14 & (6)<retval>_32 [map: 4, 6] : Success -> 4
Coalesce list: (4)<retval>_14 & (7)<retval>_36 [map: 4, 7] : Success -> 4
Coalesce list: (4)<retval>_14 & (8)<retval>_37 [map: 4, 8] : Success -> 4
Coalesce list: (4)<retval>_14 & (9)<retval>_39 [map: 4, 9] : Success -> 4
Coalesce list: (2)s_4 & (18)s_97 [map: 2, 18] : Success -> 2
Coalesce list: (2)s_4 & (19)s_98 [map: 2, 19] : Success -> 2
Coalesce list: (1)s.352_3 & (18)s_4: Fail, Non-matching TPA's
: Fail 18 non TPA.
Coalesce : s_4 &s  (2 ,3): Success -> 2
Coalesce : s_4 &s_41  (2 ,11): Success -> 11
Coalesce : T.315_1 &T.315_101  (0 ,22): Success -> 0
Coalesce : T.315_1 &T.315_105  (0 ,26): Success -> 0
Coalesce : T.315_1 &T.315_108  (0 ,29): Success -> 0
Coalesce : T.315_1 &T.315_112  (0 ,33): Success -> 0
Coalesce : T.315_1 &T.315_115  (0 ,36): Success -> 0
Coalesce : T.318_103 &T.318_107  (24 ,28): Success -> 24
Coalesce : T.318_103 &T.318_110  (24 ,31): Success -> 24
Coalesce : T.318_103 &T.318_114  (24 ,35): Success -> 24
Coalesce : T.317_102 &T.317_106  (23 ,27): Success -> 23
Coalesce : T.317_102 &T.317_109  (23 ,30): Success -> 23
Coalesce : T.317_102 &T.317_113  (23 ,34): Success -> 23
Coalesce : s.352_3 &s.352_99  (1 ,20): Success -> 1
Coalesce : s.352_3 &s.352_100  (1 ,21): Success -> 1
After Coalescing:

Partition map 

Partition 0 (T.315_1 - 1 101 105 108 112 115 )
Partition 1 (s.352_3 - 3 99 100 )
Partition 2 (PL_lex_inpat.316_7 - 7 )
Partition 3 (T.319_12 - 12 )
Partition 4 (<retval>_14 - 14 31 32 36 37 39 )
Partition 5 (s_41 - 4 5 40 41 97 98 104 111 116 )
Partition 6 (ivtmp.338_86 - 86 87 88 )
Partition 7 (ivtmp.348_91 - 91 92 93 )
Partition 8 (T.317_102 - 102 106 109 113 )
Partition 9 (T.318_103 - 103 107 110 114 )


Replacing Expressions
PL_lex_inpat.316_7 replace with --> PL_lex_inpat
s.352_99 replace with --> NON_LVALUE_EXPR <s_98>
s.352_100 replace with --> s_5 + 1B
T.315_101 replace with --> *s.352_100
T.317_102 replace with --> T.315_101 - 48
T.318_103 replace with --> (unsigned char)T.317_102
T.317_106 replace with --> T.315_105 - 48
T.318_107 replace with --> (unsigned char)T.317_106
T.315_108 replace with --> *s_40
T.317_109 replace with --> T.315_108 - 48
T.318_110 replace with --> (unsigned char)T.317_109
T.315_112 replace with --> *s_111
T.317_113 replace with --> T.315_112 - 48
T.318_114 replace with --> (unsigned char)T.317_113
T.315_115 replace with --> *s_41

T.318_103  --> T.318
T.317_102  --> T.317
ivtmp.348_91  --> ivtmp.348
ivtmp.338_86  --> ivtmp.338
s_41 not coalesced with s -->  New temp:  's.353'
<retval>_14  --> <retval>
T.319_12  --> T.319
PL_lex_inpat.316_7  --> PL_lex_inpat.316
s.352_3  --> s.352
T.315_1  --> T.315
After Root variable replacement:

Partition map 

Partition 0 (T.315 - 1 101 105 108 112 115 )
Partition 1 (s.352 - 3 99 100 )
Partition 2 (PL_lex_inpat.316 - 7 )
Partition 3 (T.319 - 12 )
Partition 4 (<retval> - 14 31 32 36 37 39 )
Partition 5 (s.353 - 4 5 40 41 97 98 104 111 116 )
Partition 6 (ivtmp.338 - 86 87 88 )
Partition 7 (ivtmp.348 - 91 92 93 )
Partition 8 (T.317 - 102 106 109 113 )
Partition 9 (T.318 - 103 107 110 114 )

Perl_intuit_more (s)
{
  char * s.353;
  char * s.352;
  char * ruatmp.351;
  char * fgotmp.350;
  char * ivtmp.348;
  char * ruatmp.341;
  char * fgotmp.340;
  char * ivtmp.338;
  char pretmp.323;
  char * pretmp.322;
  char pretmp.321;
  char * send;
  unsigned char last_un_char;
  unsigned char un_char;
  char seen[256];
  int weight;
  char * T.319;
  unsigned char T.318;
  char T.317;
  struct OP * PL_lex_inpat.316;
  char T.315;

  # BLOCK 0
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  T.315 = *s.353;
  if (T.315 != 123) goto <L0>; else goto <L2>;
  # SUCC: 3 [29.0%]  (false,exec) 1 [71.0%]  (true,exec)

  # BLOCK 1
  # PRED: 0 [71.0%]  (true,exec)
<L0>:;
  if (T.315 != 91) goto <L1>; else goto <L2>;
  # SUCC: 3 [16.8%]  (false,exec) 2 [83.2%]  (true,exec)

  # BLOCK 2
  # PRED: 1 [83.2%]  (true,exec)
<L1>:;
  return 0;
  # SUCC: EXIT [100.0%] 

  # BLOCK 3
  # PRED: 1 [16.8%]  (false,exec) 0 [29.0%]  (false,exec)
<L2>:;
  if (PL_lex_inpat == 0B) goto <L4>; else goto <L5>;
  # SUCC: 5 [67.7%]  (false,exec) 4 [32.3%]  (true,exec)

  # BLOCK 4
  # PRED: 3 [32.3%]  (true,exec)
<L4>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 5
  # PRED: 3 [67.7%]  (false,exec)
<L5>:;
  if (T.315 == 123) goto <L6>; else goto <L19>;
  # SUCC: 16 [51.2%]  (false,exec) 6 [48.8%]  (true,exec)

  # BLOCK 6
  # PRED: 5 [48.8%]  (true,exec)
<L6>:;
  if ((unsigned char)(*(s.353 + 1B) - 48) > 9) goto <L7>; else goto <L37>;
  # SUCC: 8 [33.0%]  (false,exec) 7 [67.0%]  (true,exec)

  # BLOCK 7
  # PRED: 6 [67.0%]  (true,exec)
<L7>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 8
  # PRED: 6 [33.0%]  (false,exec)
<L37>:;
  ivtmp.348 = s.353 + 2B;
  # SUCC: 9 [100.0%]  (fallthru)

  # BLOCK 9
  # PRED: 9 [89.0%]  (true,exec) 8 [100.0%]  (fallthru)
<L29>:;
  s.353 = NON_LVALUE_EXPR <ivtmp.348>;
  T.315 = *s.353;
  ivtmp.348 = ivtmp.348 + 1B;
  if ((unsigned char)(T.315 - 48) <= 9) goto <L29>; else goto <L11>;
  # SUCC: 10 [11.0%]  (false,exec) 9 [89.0%]  (true,exec)

  # BLOCK 10
  # PRED: 9 [11.0%]  (false,exec)
<L11>:;
  if (T.315 == 44) goto <L12>; else goto <L27>;
  # SUCC: 20 [71.0%]  (false,exec) 11 [29.0%]  (true,exec)

  # BLOCK 11
  # PRED: 10 [29.0%]  (true,exec)
<L12>:;
  s.353 = s.353 + 1B;
  goto <bb 20> (<L27>);
  # SUCC: 20 [100.0%]  (fallthru,exec)

  # BLOCK 12
  # PRED: 12 [89.0%]  (true,exec) 21 [100.0%]  (fallthru)
<L30>:;
  s.353 = NON_LVALUE_EXPR <ivtmp.338>;
  ivtmp.338 = ivtmp.338 + 1B;
  if ((unsigned char)(*s.353 - 48) <= 9) goto <L30>; else goto <L16>;
  # SUCC: 13 [11.0%]  (false,exec) 12 [89.0%]  (true,exec)

  # BLOCK 13
  # PRED: 20 [50.0%]  (false,exec) 12 [11.0%]  (false,exec)
<L16>:;
  if (*s.353 == 125) goto <L17>; else goto <L18>;
  # SUCC: 15 [71.0%]  (false,exec) 14 [29.0%]  (true,exec)

  # BLOCK 14
  # PRED: 13 [29.0%]  (true,exec)
<L17>:;
  return 0;
  # SUCC: EXIT [100.0%] 

  # BLOCK 15
  # PRED: 13 [71.0%]  (false,exec)
<L18>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 16
  # PRED: 5 [51.2%]  (false,exec)
<L19>:;
  s.352 = s.353 + 1B;
  T.319 = strchr (s.352, 93);
  if (s.352 < T.319) goto <L52>; else goto <L22>;
  # SUCC: 17 [33.0%]  (true,exec) 19 [67.0%]  (false,exec)

  # BLOCK 17
  # PRED: 16 [33.0%]  (true,exec)
<L52>:;
  s.353 = s.352;
  # SUCC: 18 [100.0%]  (fallthru)

  # BLOCK 18
  # PRED: 18 [89.0%]  (true,exec) 17 [100.0%]  (fallthru)
<L48>:;
  s.353 = s.353 + 1B;
  if (NON_LVALUE_EXPR <s.353> < T.319) goto <L48>; else goto <L22>;
  # SUCC: 19 [11.0%]  (false,exec) 18 [89.0%]  (true,exec)

  # BLOCK 19
  # PRED: 18 [11.0%]  (false,exec) 16 [67.0%]  (false,exec)
<L22>:;
  return 1;
  # SUCC: EXIT [100.0%] 

  # BLOCK 20
  # PRED: 10 [71.0%]  (false,exec) 11 [100.0%]  (fallthru,exec)
<L27>:;
  if ((unsigned char)(*s.353 - 48) <= 9) goto <L46>; else goto <L16>;
  # SUCC: 21 [50.0%]  (true,exec) 13 [50.0%]  (false,exec)

  # BLOCK 21
  # PRED: 20 [50.0%]  (true,exec)
<L46>:;
  ivtmp.338 = s.353 + 1B;
  goto <bb 12> (<L30>);
  # SUCC: 12 [100.0%]  (fallthru)

}


Perl_intuit_more (s)
{
  char * s.353;
  char * s.352;
  char * ivtmp.348;
  char * ivtmp.338;
  char * send;
  unsigned char last_un_char;
  unsigned char un_char;
  char seen[256];
  int weight;
  char * T.319;
  unsigned char T.318;
  char T.317;
  char T.315;

<bb 0>:
  T.315<D8949> = *s.353<D9043>;
  if (T.315<D8949> != 123) goto <L0>; else goto <L2>;

<L0>:;
  if (T.315<D8949> != 91) goto <L1>; else goto <L2>;

<L1>:;
  return 0;

<L2>:;
  if (PL_lex_inpat<D7995> == 0B) goto <L4>; else goto <L5>;

<L4>:;
  return 1;

<L5>:;
  if (T.315<D8949> == 123) goto <L6>; else goto <L19>;

<L6>:;
  if ((unsigned char)(*(s.353<D9043> + 1B) - 48) > 9) goto <L7>; else goto <L37>;

<L7>:;
  return 1;

<L37>:;
  ivtmp.348<D9033> = s.353<D9043> + 2B;

<L29>:;
  s.353<D9043> = NON_LVALUE_EXPR <ivtmp.348<D9033>>;
  T.315<D8949> = *s.353<D9043>;
  ivtmp.348<D9033> = ivtmp.348<D9033> + 1B;
  if ((unsigned char)(T.315<D8949> - 48) <= 9) goto <L29>; else goto <L11>;

<L11>:;
  if (T.315<D8949> == 44) goto <L12>; else goto <L27>;

<L12>:;
  s.353<D9043> = s.353<D9043> + 1B;
  goto <bb 20> (<L27>);

<L30>:;
  s.353<D9043> = NON_LVALUE_EXPR <ivtmp.338<D9023>>;
  ivtmp.338<D9023> = ivtmp.338<D9023> + 1B;
  if ((unsigned char)(*s.353<D9043> - 48) <= 9) goto <L30>; else goto <L16>;

<L16>:;
  if (*s.353<D9043> == 125) goto <L17>; else goto <L18>;

<L17>:;
  return 0;

<L18>:;
  return 1;

<L19>:;
  s.352<D9041> = s.353<D9043> + 1B;
  T.319<D8961> = strchr (s.352<D9041>, 93);
  if (s.352<D9041> < T.319<D8961>) goto <L52>; else goto <L22>;

<L52>:;
  s.353<D9043> = s.352<D9041>;

<L48>:;
  s.353<D9043> = s.353<D9043> + 1B;
  if (NON_LVALUE_EXPR <s.353<D9043>> < T.319<D8961>) goto <L48>; else goto <L22>;

<L22>:;
  return 1;

<L27>:;
  if ((unsigned char)(*s.353<D9043> - 48) <= 9) goto <L46>; else goto <L16>;

<L46>:;
  ivtmp.338<D9023> = s.353<D9043> + 1B;
  goto <bb 12> (<L30>);

}



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