http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55018
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Known to work| |4.4.5
Keywords| |wrong-code
Last reconfirmed| |2012-10-22
CC| |pinskia at gcc dot gnu.org
Ever Confirmed|0 |1
Summary|CDDCE pass is too |[4.7/4.8 Regression] CDDCE
|aggressive sometimes with |pass is too aggressive
|infinite loops and with |sometimes with infinite
|some builtin functions |loops and with some
| |functions
Target Milestone|--- |4.7.3
Known to fail| |4.7.0, 4.8.0
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-10-22
08:54:43 UTC ---
(In reply to comment #5)
> It does if it takes occurrence as a parameter:
ok, I can now make a testcase which should exit but currently does not.
A Runtime testcase which works at -O1, -O2, and -O0 but goes into an infinite
loop at -O3:
void myFunc(int) __attribute__((noinline,noclone));
void myFunc(int a)
{
if (a==100)
__builtin_exit(0);
}
void Sender_signal(int Connect) __attribute__((noinline,noclone));
void Sender_signal(int Connect)
{
int State = 3;
int occurrence = 0;
if (Connect) {
State = 0;
}
start:
if (Connect) {
goto start;
}
occurrence++;
if(State != 2){
myFunc(occurrence);
}
goto start;
}
int main(void)
{
Sender_signal(0);
return 0;
}