From 39cd6f1662bbe1d0747ebebdcce51ae28078f7a3 Mon Sep 17 00:00:00 2001 From: Dale Johannesen Date: Thu, 12 Apr 2007 21:01:53 +0000 Subject: [PATCH] testcases for function linkage git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35955 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../C++Frontend/2003-11-02-WeakLinkage.cpp.tr | 1 - .../2007-04-11-InlineStorageClassC++.cpp | 37 +++++++++++++++++++ .../2007-04-11-InlineStorageClassC89.c | 37 +++++++++++++++++++ .../2007-04-11-InlineStorageClassC99.c | 37 +++++++++++++++++++ 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 test/C++Frontend/2007-04-11-InlineStorageClassC++.cpp create mode 100644 test/CFrontend/2007-04-11-InlineStorageClassC89.c create mode 100644 test/CFrontend/2007-04-11-InlineStorageClassC99.c diff --git a/test/C++Frontend/2003-11-02-WeakLinkage.cpp.tr b/test/C++Frontend/2003-11-02-WeakLinkage.cpp.tr index 63dc88742f7..748ca6385be 100644 --- a/test/C++Frontend/2003-11-02-WeakLinkage.cpp.tr +++ b/test/C++Frontend/2003-11-02-WeakLinkage.cpp.tr @@ -1,5 +1,4 @@ // RUN: %llvmgcc -xc++ -S -o - %s | not grep weak -// XFAIL: llvmgcc4 // The template should compile to linkonce linkage, not weak linkage. template diff --git a/test/C++Frontend/2007-04-11-InlineStorageClassC++.cpp b/test/C++Frontend/2007-04-11-InlineStorageClassC++.cpp new file mode 100644 index 00000000000..902ee126f60 --- /dev/null +++ b/test/C++Frontend/2007-04-11-InlineStorageClassC++.cpp @@ -0,0 +1,37 @@ +// RUN: %llvmgxx %s -S -emit-llvm -O0 -o - | grep define | grep xglobWeak | grep linkonce | wc -l | grep 1 +// RUN: %llvmgxx %s -S -emit-llvm -O0 -o - | grep define | grep xextWeak | grep linkonce | wc -l | grep 1 +// RUN: %llvmgxx %s -S -emit-llvm -O0 -o - | grep define | grep xWeaknoinline | grep weak wc -l | grep 1 +// RUN: %llvmgxx %s -S -emit-llvm -O0 -o - | grep define | grep xWeakextnoinline | grep weak wc -l | grep 1 +// RUN: %llvmgxx %s -S -emit-llvm -O0 -o - | grep declare | grep xglobnoWeak | grep linkonce | wc -l | grep 1 +// RUN: %llvmgxx %s -S -emit-llvm -O0 -o - | grep define | grep xstatnoWeak | grep internal | wc -l | grep 1 +// RUN: %llvmgxx %s -S -emit-llvm -O0 -o - | grep define | grep xextnoWeak | grep linkonce | wc -l | grep 1 +inline int xglobWeak(int) __attribute__((weak)); +inline int xglobWeak (int i) { + return i*2; +} +inline int xextWeak(int) __attribute__((weak)); +extern inline int xextWeak (int i) { + return i*4; +} +int xWeaknoinline(int) __attribute__((weak)); +int xWeaknoinline(int i) { + return i*8; +} +int xWeakextnoinline(int) __attribute__((weak)); +extern int xWeakextnoinline(int i) { + return i*16; +} +inline int xglobnoWeak (int i) { + return i*32; +} +static inline int xstatnoWeak (int i) { + return i*64; +} +extern inline int xextnoWeak (int i) { + return i*128; +} +int j(int y) { + return xglobnoWeak(y)+xstatnoWeak(y)+xextnoWeak(y)+ + xglobWeak(y)+xextWeak(y)+ + xWeakextnoinline(y)+xWeaknoinline(y); +} diff --git a/test/CFrontend/2007-04-11-InlineStorageClassC89.c b/test/CFrontend/2007-04-11-InlineStorageClassC89.c new file mode 100644 index 00000000000..365e3375b2d --- /dev/null +++ b/test/CFrontend/2007-04-11-InlineStorageClassC89.c @@ -0,0 +1,37 @@ +// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | grep xglobWeak | grep weak | wc -l | grep 1 +// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | grep xextWeak | grep weak | wc -l | grep 1 +// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | grep xWeaknoinline | grep weak wc -l | grep 1 +// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | grep xWeakextnoinline | grep weak wc -l | grep 1 +// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | grep xglobnoWeak | grep -v internal | grep -v weak | grep -v linkonce | wc -l | grep 1 +// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | grep xstatnoWeak | grep internal | wc -l | grep 1 +// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep declare | grep xextnoWeak | grep -v internal | grep -v weak | grep -v linkonce | wc -l | grep 1 +inline int xglobWeak(int) __attribute__((weak)); +inline int xglobWeak (int i) { + return i*2; +} +inline int xextWeak(int) __attribute__((weak)); +extern inline int xextWeak (int i) { + return i*4; +} +int xWeaknoinline(int) __attribute__((weak)); +int xWeaknoinline(int i) { + return i*8; +} +int xWeakextnoinline(int) __attribute__((weak)); +extern int xWeakextnoinline(int i) { + return i*16; +} +inline int xglobnoWeak (int i) { + return i*32; +} +static inline int xstatnoWeak (int i) { + return i*64; +} +extern inline int xextnoWeak (int i) { + return i*128; +} +int j(int y) { + return xglobnoWeak(y)+xstatnoWeak(y)+xextnoWeak(y)+ + xglobWeak(y)+xextWeak(y)+ + xWeakextnoinline(y)+xWeaknoinline(y); +} diff --git a/test/CFrontend/2007-04-11-InlineStorageClassC99.c b/test/CFrontend/2007-04-11-InlineStorageClassC99.c new file mode 100644 index 00000000000..d9ab8d31514 --- /dev/null +++ b/test/CFrontend/2007-04-11-InlineStorageClassC99.c @@ -0,0 +1,37 @@ +// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep declare | grep xglobWeak | grep extern_weak | wc -l | grep 1 +// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | grep xextWeak | grep weak | wc -l | grep 1 +// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | grep xWeaknoinline | grep weak wc -l | grep 1 +// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | grep xWeakextnoinline | grep weak wc -l | grep 1 +// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep declare | grep xglobnoWeak | grep -v internal | grep -v weak | grep -v linkonce | wc -l | grep 1 +// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | grep xstatnoWeak | grep internal | wc -l | grep 1 +// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | grep xextnoWeak | grep -v internal | grep -v weak | grep -v linkonce | wc -l | grep 1 +inline int xglobWeak(int) __attribute__((weak)); +inline int xglobWeak (int i) { + return i*2; +} +inline int xextWeak(int) __attribute__((weak)); +extern inline int xextWeak (int i) { + return i*4; +} +int xWeaknoinline(int) __attribute__((weak)); +int xWeaknoinline(int i) { + return i*8; +} +int xWeakextnoinline(int) __attribute__((weak)); +extern int xWeakextnoinline(int i) { + return i*16; +} +inline int xglobnoWeak (int i) { + return i*32; +} +static inline int xstatnoWeak (int i) { + return i*64; +} +extern inline int xextnoWeak (int i) { + return i*128; +} +int j(int y) { + return xglobnoWeak(y)+xstatnoWeak(y)+xextnoWeak(y)+ + xglobWeak(y)+xextWeak(y)+ + xWeakextnoinline(y)+xWeaknoinline(y); +} -- 2.34.1