diff options
| author | Dale Johannesen <dalej@apple.com> | 2010-07-14 21:22:35 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2010-07-14 21:22:35 +0000 |
| commit | 6fe8c37a017c6ee5167848011ba5274cbf4a795e (patch) | |
| tree | 03af21e0d3ad76943f053c2cc6a523b8b8e2c9ea /llvm/test/FrontendC | |
| parent | 5d695f041ce6d1492de785871c7dadd34128b895 (diff) | |
| download | bcm5719-llvm-6fe8c37a017c6ee5167848011ba5274cbf4a795e.tar.gz bcm5719-llvm-6fe8c37a017c6ee5167848011ba5274cbf4a795e.zip | |
Tests for llvm-gcc commit 108360.
llvm-svn: 108362
Diffstat (limited to 'llvm/test/FrontendC')
| -rw-r--r-- | llvm/test/FrontendC/2010-07-14-overconservative-align.c | 14 | ||||
| -rw-r--r-- | llvm/test/FrontendC/2010-07-14-ref-off-end.c | 27 |
2 files changed, 41 insertions, 0 deletions
diff --git a/llvm/test/FrontendC/2010-07-14-overconservative-align.c b/llvm/test/FrontendC/2010-07-14-overconservative-align.c new file mode 100644 index 00000000000..65fbdb83003 --- /dev/null +++ b/llvm/test/FrontendC/2010-07-14-overconservative-align.c @@ -0,0 +1,14 @@ +// RUN: %llvmgcc %s -emit-llvm -m64 -S -o - | FileCheck %s +// PR 5995 +struct s { + int word; + struct { + int filler __attribute__ ((aligned (8))); + }; +}; + +void func (struct s *s) +{ +// CHECK: load %struct.s** %s_addr, align 8 + s->word = 0; +} diff --git a/llvm/test/FrontendC/2010-07-14-ref-off-end.c b/llvm/test/FrontendC/2010-07-14-ref-off-end.c new file mode 100644 index 00000000000..6ccd05b770e --- /dev/null +++ b/llvm/test/FrontendC/2010-07-14-ref-off-end.c @@ -0,0 +1,27 @@ +// RUN: %llvmgcc %s -S -m32 -o - | FileCheck %s +// Formerly this generated code that did a load past the end of the structure. +// That was fixed by 46726, but that patch had bad side effects and was +// reverted. This has been fixed another way in the meantime. +extern void abort(); +extern void exit(int); +struct T +{ +unsigned i:8; +unsigned c:24; +}; +f(struct T t) +{ +struct T s[1]; +s[0]=t; +return(char)s->c; +} +main() +{ +// CHECK: getelementptr inbounds %struct.T* %t, i32 0, i32 0 ; <i32*> [#uses=2] +// CHECK: getelementptr inbounds %struct.T* %t, i32 0, i32 0 ; <i32*> [#uses=2] +struct T t; +t.i=0xff; +t.c=0xffff11; +if(f(t)!=0x11)abort(); +exit(0); +} |

