This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
outof-ssa vs. -fnon-call-exceptions: known problem?
- From: Richard Sandiford <rsandifo at nildram dot co dot uk>
- To: gcc at gcc dot gnu dot org
- Date: Sat, 29 Sep 2007 11:57:28 +0100
- Subject: outof-ssa vs. -fnon-call-exceptions: known problem?
While looking into the failure of gcc.c-torture/compile/20050113-1.c
on mipsisa32-elf, I noticed the tree-outof-ssa can move potentially-
trapping operations across what were sequence points, even when compiled
with -fnon-call-exceptions. E.g., consider the following C++ code,
compiled with -fnon-call-exceptions:
------------------------------------------------------------------------
#include <stdio.h>
void foo (int) { printf ("Bar\n"); }
int
main (void)
{
int a = 1 / 0;
printf ("Foo\n");
foo (a);
}
------------------------------------------------------------------------
The tree optimisers themselves preserve the intent of the code,
but tree-outof-ssa.c propogates the division into the call to foo():
------------------------------------------------------------------------
int main() ()
{
<bb 2>:
__builtin_puts (&"Foo"[0]);
foo (1 / 0);
return 0;
}
------------------------------------------------------------------------
So the unoptimised program behaves as expected, raising the divide-by-zero
trap before printing "Foo". The optimised version prints "Foo" first.
Is this a known problem? (I tried to find it in bugzilla, but couldn't)
Richard