------- Additional Comments From steven at gcc dot gnu dot org  2005-05-06 
08:39 -------
Looks fixed to me. 
 
The only problem now is that there is an extra load of 128 as an immediate, 
I haven't looked at why uncprop doesn't fix this. 
 
--------------------------- 
extern void abort (void) __attribute__ ((__noreturn__)); 
 
extern int bar (int, int); 
 
int 
PR19791_test (int mode, int size, unsigned int align) 
{ 
  int align0; 
  int iftmp1; 
 
  if (mode == 0) 
    { 
      if (align != 128) 
        abort (); 
    } 
 
  align0 = (int) align; 
  if (mode == 0) 
    { 
      int D1131 = align0 / 8; 
      int D1132 = D1131 + size; 
      int D1133 = D1132 - 1; 
      int D1134 = D1131 - 1; 
      int D1135 = ~D1134; 
 
      iftmp1 = D1133 & D1135; 
    } 
  else 
    { 
      iftmp1 = size; 
    } 
 
  return bar (iftmp1, align0); 
} 
 
 
int 
PR19791_result (int mode, int size, unsigned int align) 
{ 
  int align0; 
  int iftmp1; 
 
  if (mode == 0) 
    { 
      if (align != 128) 
        abort (); 
    } 
 
  align0 = (int) align; 
  if (mode == 0) 
    { 
      int D1131 = ((int) 128) / 8; 
      int D1132 = D1131 + size; 
      int D1133 = D1132 - 1; 
      int D1134 = D1131 - 1; 
      int D1135 = ~D1134; 
 
      iftmp1 = D1133 & D1135; 
    } 
  else 
    { 
      iftmp1 = size; 
    } 
 
  return bar (iftmp1, align0); 
} 
--------------------------- 
 
--------------------------- 
PR19791_test (mode, size, align) 
{ 
  int D1135; 
  int D1134; 
  int D1133; 
  int D1132; 
  int D1131; 
  int iftmp1; 
  int align0; 
  int D.1579; 
  int D.1578; 
 
<bb 0>: 
  if (mode == 0) goto <L0>; else goto <L2>; 
 
<L0>:; 
  if (align != 128) goto <L1>; else goto <L4>; 
 
<L1>:; 
  abort (); 
 
<L2>:; 
  align0 = (int) align; 
  iftmp1 = size; 
  goto <bb 5> (<L6>); 
 
<L4>:; 
  iftmp1 = size + 15 & -16; 
  align0 = 128; 
 
<L6>:; 
  D.1578 = bar (iftmp1, align0) [tail call]; 
  return D.1578; 
 
} 
 
PR19791_result (mode, size, align) 
{ 
  int D1135; 
  int D1134; 
  int D1133; 
  int D1132; 
  int D1131; 
  int iftmp1; 
  int align0; 
  int D.1593; 
  int D.1592; 
 
<bb 0>: 
  if (mode == 0) goto <L0>; else goto <L2>; 
 
<L0>:; 
  if (align != 128) goto <L1>; else goto <L4>; 
 
<L1>:; 
  abort (); 
 
<L2>:; 
  align0 = (int) align; 
  iftmp1 = size; 
  goto <bb 5> (<L6>); 
 
<L4>:; 
  iftmp1 = size + 15 & -16; 
  align0 = 128; 
 
<L6>:; 
  D.1592 = bar (iftmp1, align0) [tail call]; 
  return D.1592; 
 
} 
--------------------------- 
 

-- 


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

Reply via email to