This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c/1687: [3.3/3.4 regression] Exponential time behavior with -O-finline-functions (compile time regression from 2.95.3)
- From: Steven Bosscher <s dot bosscher at student dot tudelft dot nl>
- To: gcc-gnats at gcc dot gnu dot org, kcook34 at ford dot com, gcc-bugs at gcc dot gnu dot org,nobody at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, mark at codesourcery dot com
- Date: Fri, 02 May 2003 01:52:13 +0200
- Subject: 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