tinycc/tests/tests2/132_bound_test.c
herman ten brugge 087cf2e579 x86_64 bound checking failure
The code:
void mul(double *p)
{
    *p *= 2.0;
}

failed on x86_64 because register was not loaded after
bound checking call.
Also printed size when pointer indir failes.
2025-08-10 21:55:48 +02:00

38 lines
492 B
C

#include <stdio.h>
#include <float.h>
union ieee_double_extract
{
struct {
unsigned int manl:32;
unsigned int manh:20;
unsigned int exp:11;
unsigned int sig:1;
} s;
double d;
};
double scale(double d)
{
union ieee_double_extract x;
x.d = d;
x.d *= 1000;
return x.d;
}
void mul(double *p)
{
*p *= 2.0;
}
int
main(void)
{
double d = 4.0;
printf("%g\n", scale(42));
mul(&d);
printf("%g\n", d);
return 0;
}