| // 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 |
| // CHECK: getelementptr inbounds %struct.T* %t, i32 0, i32 0 |
| struct T t; |
| t.i=0xff; |
| t.c=0xffff11; |
| if(f(t)!=0x11)abort(); |
| exit(0); |
| } |