Skip to content
Snippets Groups Projects
Commit e2c0595f authored by Gerolf Hoflehner's avatar Gerolf Hoflehner
Browse files

Enable test/CodeGen/indirect-goto.c in 64b for local arrays

In 32b mode the reference count for block addresses
is not zero. This prevents inlining and constant
folding and causes the test to fail. Changing
the triple allows runnning the test in 64b mode.

The array in foo2 is now local instead of static until
at lower optimization levels the interprocedural constant
propagator is invoked before the global optimizer.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212092 91177308-0d34-0410-b5e6-96231b3b80d8
parent 8709ca93
No related branches found
No related tags found
No related merge requests found
// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm -o - %s // RUN: %clang_cc1 -triple x86_64-unknown-unknown -O3 -emit-llvm -o - %s | grep "ret i32 2520"
// DISABLED: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm -o - %s | grep "ret i32 2520"
static int foo(unsigned i) { static int foo(unsigned i) {
void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 }; void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 };
...@@ -15,7 +14,7 @@ static int foo(unsigned i) { ...@@ -15,7 +14,7 @@ static int foo(unsigned i) {
} }
static int foo2(unsigned i) { static int foo2(unsigned i) {
static const void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 }; const void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 };
int res = 1; int res = 1;
goto *addrs[i]; goto *addrs[i];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment