diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/arm/pr42574.c')
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr42574.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/arm/pr42574.c b/gcc/testsuite/gcc.target/arm/pr42574.c new file mode 100644 index 000000000..0ccd05f99 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr42574.c @@ -0,0 +1,24 @@ +/* { dg-options "-mthumb -Os -fpic" } */ +/* { dg-require-effective-target arm_thumb1_ok } */ +/* { dg-require-effective-target fpic } */ +/* Make sure the address of glob.c is calculated only once and using + a logical shift for the offset (200<<1). */ +/* { dg-final { scan-assembler-times "lsl" 1 } } */ + +struct A { + char a[400]; + float* c; +}; +struct A glob; +void func(); +void func1(float*); +int func2(float*, int*); +void func3(float*); + +void test(int *p) { + func1(glob.c); + if (func2(glob.c, p)) { + func(); + } + func3(glob.c); +} |