From e2c0595fe2e5f37d1329e878eb64dfe3d116d4c9 Mon Sep 17 00:00:00 2001 From: Gerolf Hoflehner <ghoflehner@apple.com> Date: Tue, 1 Jul 2014 05:10:06 +0000 Subject: [PATCH] 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 --- test/CodeGen/indirect-goto.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/CodeGen/indirect-goto.c b/test/CodeGen/indirect-goto.c index bea83ee264e..22dbcad367b 100644 --- a/test/CodeGen/indirect-goto.c +++ b/test/CodeGen/indirect-goto.c @@ -1,5 +1,4 @@ -// RUN: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm -o - %s -// DISABLED: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm -o - %s | grep "ret i32 2520" +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -O3 -emit-llvm -o - %s | grep "ret i32 2520" static int foo(unsigned i) { void *addrs[] = { &&L1, &&L2, &&L3, &&L4, &&L5 }; @@ -15,7 +14,7 @@ static int foo(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; goto *addrs[i]; -- GitLab