summaryrefslogtreecommitdiffstats
path: root/test/FrontendC
diff options
context:
space:
mode:
authorrdivacky <rdivacky@FreeBSD.org>2010-05-27 15:15:58 +0000
committerrdivacky <rdivacky@FreeBSD.org>2010-05-27 15:15:58 +0000
commit1e3dec662ea18131c495db50caccc57f77b7a5fe (patch)
tree9fad9a5d5dd8c4ff54af48edad9c8cc26dd5fda1 /test/FrontendC
parent377552607e51dc1d3e6ff33833f9620bcfe815ac (diff)
downloadFreeBSD-src-1e3dec662ea18131c495db50caccc57f77b7a5fe.zip
FreeBSD-src-1e3dec662ea18131c495db50caccc57f77b7a5fe.tar.gz
Update LLVM to r104832.
Diffstat (limited to 'test/FrontendC')
-rw-r--r--test/FrontendC/2007-04-11-InlineStorageClassC89.c4
-rw-r--r--test/FrontendC/2007-04-11-InlineStorageClassC99.c6
-rw-r--r--test/FrontendC/2010-05-14-Optimized-VarType.c23
-rw-r--r--test/FrontendC/2010-05-18-asmsched.c17
-rw-r--r--test/FrontendC/2010-05-18-palignr.c24
-rw-r--r--test/FrontendC/2010-05-26-AsmSideEffect.c12
-rw-r--r--test/FrontendC/pr2394.c6
7 files changed, 87 insertions, 5 deletions
diff --git a/test/FrontendC/2007-04-11-InlineStorageClassC89.c b/test/FrontendC/2007-04-11-InlineStorageClassC89.c
index ab1f556..ec2b1ec 100644
--- a/test/FrontendC/2007-04-11-InlineStorageClassC89.c
+++ b/test/FrontendC/2007-04-11-InlineStorageClassC89.c
@@ -11,8 +11,8 @@
// RUN: grep -v linkonce | count 1
// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | \
// RUN: grep xstatnoWeak | grep internal | count 1
-// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep declare | \
-// RUN: grep xextnoWeak | grep -v internal | grep -v weak | \
+// RUN: %llvmgcc %s -S -emit-llvm -O0 -o - | grep define | \
+// RUN: grep xextnoWeak | grep available_externally | grep -v weak | \
// RUN: grep -v linkonce | count 1
inline int xglobWeak(int) __attribute__((weak));
inline int xglobWeak (int i) {
diff --git a/test/FrontendC/2007-04-11-InlineStorageClassC99.c b/test/FrontendC/2007-04-11-InlineStorageClassC99.c
index f6193aa..89af278 100644
--- a/test/FrontendC/2007-04-11-InlineStorageClassC99.c
+++ b/test/FrontendC/2007-04-11-InlineStorageClassC99.c
@@ -6,13 +6,13 @@
// RUN: grep xWeaknoinline | grep weak | count 1
// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | \
// RUN: grep xWeakextnoinline | grep weak | count 1
-// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep declare | \
-// RUN: grep xglobnoWeak | grep -v internal | grep -v weak | \
+// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | \
+// RUN: grep xglobnoWeak | grep available_externally | grep -v weak | \
// RUN: grep -v linkonce | count 1
// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | \
// RUN: grep xstatnoWeak | grep internal | count 1
// RUN: %llvmgcc -std=c99 %s -S -emit-llvm -O0 -o - | grep define | \
-// RUN: grep xextnoWeak | grep -v internal | grep -v weak | \
+// RUN: grep xextnoWeak | grep -v available_externally | grep -v weak | \
// RUN: grep -v linkonce | count 1
inline int xglobWeak(int) __attribute__((weak));
inline int xglobWeak (int i) {
diff --git a/test/FrontendC/2010-05-14-Optimized-VarType.c b/test/FrontendC/2010-05-14-Optimized-VarType.c
new file mode 100644
index 0000000..2aa85b5
--- /dev/null
+++ b/test/FrontendC/2010-05-14-Optimized-VarType.c
@@ -0,0 +1,23 @@
+// RUN: %llvmgcc %s -Os -S -g -o - | grep DW_TAG_structure_type | count 1
+// Variable 'a' is optimized but the debug info should preserve its type info.
+#include <stdlib.h>
+
+struct foo {
+ int Attribute;
+};
+
+void *getfoo(void) __attribute__((noinline));
+
+void *getfoo(void)
+{
+ int *x = malloc(sizeof(int));
+ *x = 42;
+ return (void *)x;
+}
+
+int main(int argc, char *argv[]) {
+ struct foo *a = (struct foo *)getfoo();
+
+ return a->Attribute;
+}
+
diff --git a/test/FrontendC/2010-05-18-asmsched.c b/test/FrontendC/2010-05-18-asmsched.c
new file mode 100644
index 0000000..34abbe3
--- /dev/null
+++ b/test/FrontendC/2010-05-18-asmsched.c
@@ -0,0 +1,17 @@
+// RUN: %llvmgcc %s -c -O3 -m64 -emit-llvm -o - | llc -march=x86-64 -mtriple=x86_64-apple-darwin | FileCheck %s
+// r9 used to be clobbered before its value was moved to r10. 7993104.
+
+void foo(int x, int y) {
+// CHECK: bar
+// CHECK: movq %r9, %r10
+// CHECK: movq %rdi, %r9
+// CHECK: bar
+ register int lr9 asm("r9") = x;
+ register int lr10 asm("r10") = y;
+ int foo;
+ asm volatile("bar" : "=r"(lr9) : "r"(lr9), "r"(lr10));
+ foo = lr9;
+ lr9 = x;
+ lr10 = foo;
+ asm volatile("bar" : "=r"(lr9) : "r"(lr9), "r"(lr10));
+} \ No newline at end of file
diff --git a/test/FrontendC/2010-05-18-palignr.c b/test/FrontendC/2010-05-18-palignr.c
new file mode 100644
index 0000000..0b78eed
--- /dev/null
+++ b/test/FrontendC/2010-05-18-palignr.c
@@ -0,0 +1,24 @@
+// RUN: %llvmgcc -mssse3 -S -o - %s | llc -mtriple=x86_64-apple-darwin | FileCheck %s
+// XFAIL: *
+// XTARGET: x86,i386,i686
+
+#include <tmmintrin.h>
+
+int main ()
+{
+#if defined( __SSSE3__ )
+
+#define vec_rld_epi16( _a, _i ) ({ vSInt16 _t = _a; _t = _mm_alignr_epi8( _t, _t, _i ); /*return*/ _t; })
+ typedef int16_t vSInt16 __attribute__ ((__vector_size__ (16)));
+
+ short dtbl[] = {1,2,3,4,5,6,7,8};
+ vSInt16 *vdtbl = (vSInt16*) dtbl;
+
+ vSInt16 v0;
+ v0 = *vdtbl;
+ // CHECK: pshufd $57
+ v0 = vec_rld_epi16( v0, 4 );
+
+ return 0;
+#endif
+}
diff --git a/test/FrontendC/2010-05-26-AsmSideEffect.c b/test/FrontendC/2010-05-26-AsmSideEffect.c
new file mode 100644
index 0000000..c5f7579
--- /dev/null
+++ b/test/FrontendC/2010-05-26-AsmSideEffect.c
@@ -0,0 +1,12 @@
+// RUN: %llvmgcc %s -S -emit-llvm -o - | FileCheck %s
+// Radar 8026855
+
+int test (void *src) {
+ register int w0 asm ("0");
+ // CHECK: call i32 asm sideeffect
+ asm ("ldr %0, [%1]": "=r" (w0): "r" (src));
+ // The asm to read the value of w0 has a sideeffect for a different reason
+ // (see 2010-05-18-asmsched.c) but that's not what this is testing for.
+ // CHECK: call i32 asm
+ return w0;
+}
diff --git a/test/FrontendC/pr2394.c b/test/FrontendC/pr2394.c
new file mode 100644
index 0000000..ca8b046
--- /dev/null
+++ b/test/FrontendC/pr2394.c
@@ -0,0 +1,6 @@
+// RUN: %llvmgcc %s -S -o - | FileCheck %s
+struct __attribute((packed)) x {int a : 24;};
+int a(struct x* g) {
+ // CHECK: load i24
+ return g->a;
+}
OpenPOWER on IntegriCloud