This is the mail archive of the gcc-bugs@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: c/1687: [3.3/3.4 regression] Exponential time behavior with -O-finline-functions (compile time regression from 2.95.3)


http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=1687

This bug exists for at least '+', '-', '&', '|' as operators in the attached test case, i.e.

int in0 ;  int in1 ;
int in2 ;  int in3 ;
int in4 ;  int in5 ;
int in6 ;  int in7 ;
int in8 ;  int in9 ;
int in10; int in11;
int in12; int in13;
int in14; int in15;
unsigned long output;

void mux(void)
{
 output =
     (in0   ?  0x00000001 : 0) + (in1   ?  0x00000002 : 0) ||
     (in2   ?  0x00000004 : 0) + (in3   ?  0x00000008 : 0) ||
     (in4   ?  0x00000010 : 0) + (in5   ?  0x00000020 : 0) ||
     (in6   ?  0x00000040 : 0) + (in7   ?  0x00000080 : 0) ||
     (in8   ?  0x00000100 : 0) + (in9   ?  0x00000200 : 0) ||
     (in10  ?  0x00000400 : 0) + (in11  ?  0x00000800 : 0) ||
     (in12  ?  0x00001000 : 0) + (in13  ?  0x00002000 : 0) ||
     (in14  ?  0x00004000 : 0) + (in15  ?  0x00008000 : 0) ;
}

also triggers the bug.  But '||' and '&&' do not.  Maybe a bug
somewhere in convert?

Greetz
Steven


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