mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 10:05:29 +00:00
Anticipate testcase problems with GCC 12
There will be a lot more to come. On amd64 Linux In faultstatus was seeing the division by zero and emitting a ud2 opcode. In wrap3 a pair of mutually recursive functions were being inlined. When forced not to be inlined GCC merged them into a single function. It cannot see that the client requests have diffeent behaviour.
This commit is contained in:
parent
01e05ea81c
commit
49fe0dc74a
@ -5,17 +5,19 @@
|
|||||||
/* Check that function wrapping works for a mutually recursive
|
/* Check that function wrapping works for a mutually recursive
|
||||||
pair. */
|
pair. */
|
||||||
|
|
||||||
static int fact1 ( int n );
|
int fact1 ( int n );
|
||||||
static int fact2 ( int n );
|
int fact2 ( int n );
|
||||||
|
|
||||||
/* This is needed to stop gcc4 turning 'fact' into a loop */
|
/* This is needed to stop gcc4 turning 'fact' into a loop */
|
||||||
__attribute__((noinline))
|
__attribute__((noinline))
|
||||||
int mul ( int x, int y ) { return x * y; }
|
int mul ( int x, int y ) { return x * y; }
|
||||||
|
|
||||||
|
__attribute((noinline))
|
||||||
int fact1 ( int n )
|
int fact1 ( int n )
|
||||||
{
|
{
|
||||||
if (n == 0) return 1; else return mul(n, fact2(n-1));
|
if (n == 0) return 1; else return mul(n, fact2(n-1));
|
||||||
}
|
}
|
||||||
|
__attribute((noinline))
|
||||||
int fact2 ( int n )
|
int fact2 ( int n )
|
||||||
{
|
{
|
||||||
if (n == 0) return 1; else return mul(n, fact1(n-1));
|
if (n == 0) return 1; else return mul(n, fact1(n-1));
|
||||||
|
|||||||
@ -190,7 +190,9 @@ int main()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static volatile s_zero;
|
||||||
|
|
||||||
static int zero()
|
static int zero()
|
||||||
{
|
{
|
||||||
return 0;
|
return s_zero;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user