diff options
author | rdivacky <rdivacky@FreeBSD.org> | 2010-05-27 15:15:58 +0000 |
---|---|---|
committer | rdivacky <rdivacky@FreeBSD.org> | 2010-05-27 15:15:58 +0000 |
commit | 1e3dec662ea18131c495db50caccc57f77b7a5fe (patch) | |
tree | 9fad9a5d5dd8c4ff54af48edad9c8cc26dd5fda1 /test/FrontendC | |
parent | 377552607e51dc1d3e6ff33833f9620bcfe815ac (diff) | |
download | FreeBSD-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.c | 4 | ||||
-rw-r--r-- | test/FrontendC/2007-04-11-InlineStorageClassC99.c | 6 | ||||
-rw-r--r-- | test/FrontendC/2010-05-14-Optimized-VarType.c | 23 | ||||
-rw-r--r-- | test/FrontendC/2010-05-18-asmsched.c | 17 | ||||
-rw-r--r-- | test/FrontendC/2010-05-18-palignr.c | 24 | ||||
-rw-r--r-- | test/FrontendC/2010-05-26-AsmSideEffect.c | 12 | ||||
-rw-r--r-- | test/FrontendC/pr2394.c | 6 |
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; +} |