aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/mangle.c
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-03-21 08:24:40 +0000
committerChris Lattner <sabre@nondot.org>2009-03-21 08:24:40 +0000
commitca3f25c1fb9bbf0d807985baee460670b7f195b4 (patch)
tree4eefdaba5322484a2fc0bd15c486ed7f0d5301b4 /test/CodeGen/mangle.c
parent2d58406872e5af0c924623d9f7c194c4f09936d3 (diff)
fix several problems with asm renaming, by pulling it into the mangling code:
1. it wasn't applying to definitions, only declarations, e.g. int x __asm("foo") 2. multiple definitions were conflicting, they weren't getting merged. 3. the code was duplicated in several places. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67442 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/mangle.c')
-rw-r--r--test/CodeGen/mangle.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/test/CodeGen/mangle.c b/test/CodeGen/mangle.c
index fbee4122d1..cdcce751cb 100644
--- a/test/CodeGen/mangle.c
+++ b/test/CodeGen/mangle.c
@@ -1,9 +1,28 @@
// RUN: clang -arch i386 -emit-llvm -o %t %s &&
// RUN: grep '@_Z2f0i' %t &&
-// RUN: grep '@_Z2f0l' %t
+// RUN: grep '@_Z2f0l' %t &&
// Make sure we mangle overloadable, even in C system headers.
# 1 "somesystemheader.h" 1 3 4
void __attribute__((__overloadable__)) f0(int a) {}
void __attribute__((__overloadable__)) f0(long b) {}
+
+
+
+// These should get merged.
+void foo() __asm__("bar");
+void foo2() __asm__("bar");
+
+// RUN: grep '@"\\01foo"' %t &&
+// RUN: grep '@"\\01bar"' %t
+
+int nux __asm__("foo");
+extern float nux2 __asm__("foo");
+
+int test() {
+ foo();
+ foo2();
+
+ return nux + nux2;
+}