mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Test for llvm-gcc bug fixed by 70301.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70302 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
23b0543e3f
commit
85f74f817a
127
test/FrontendObjC/2009-04-28-bitfield-vs-vbc.m
Normal file
127
test/FrontendObjC/2009-04-28-bitfield-vs-vbc.m
Normal file
@ -0,0 +1,127 @@
|
||||
// RUN: %llvmgcc -S -x objective-c -m32 %s -o %t
|
||||
// This used to crash, 6831493.
|
||||
#include <stdlib.h>
|
||||
|
||||
struct s0 {
|
||||
double x;
|
||||
};
|
||||
|
||||
@interface I2 {
|
||||
struct s0 _iv1;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface I3 : I2 {
|
||||
unsigned int _iv2 :1;
|
||||
unsigned : 0;
|
||||
unsigned int _iv3 : 3;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface I4 : I3 {
|
||||
char _iv4;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface I5 : I4 {
|
||||
char _iv5;
|
||||
int _iv6;
|
||||
int _iv7;
|
||||
}
|
||||
|
||||
@property int P1;
|
||||
@end
|
||||
|
||||
@implementation I2
|
||||
@end
|
||||
|
||||
@implementation I3
|
||||
@end
|
||||
|
||||
@implementation I4
|
||||
@end
|
||||
|
||||
@interface I5 ()
|
||||
@property int P2;
|
||||
@end
|
||||
|
||||
#if 0
|
||||
int g2 = sizeof(I2);
|
||||
int g3 = sizeof(I3);
|
||||
int g4 = sizeof(I4);
|
||||
int g5_0 = sizeof(I5);
|
||||
#endif
|
||||
|
||||
@implementation I5
|
||||
#ifdef __x86_64
|
||||
@synthesize P1 = _MadeUpName;
|
||||
@synthesize P2 = _AnotherMadeUpName;
|
||||
#else
|
||||
@synthesize P1 = _iv6;
|
||||
@synthesize P2 = _iv7;
|
||||
#endif
|
||||
@end
|
||||
|
||||
#if 0
|
||||
int g5_1 = sizeof(I5);
|
||||
#endif
|
||||
|
||||
@interface T0_I0 {
|
||||
double iv_A_0;
|
||||
char iv_A_1;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface T0_I1 : T0_I0 {
|
||||
char iv_B_0;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface T0_I2 : T0_I1 {
|
||||
char iv_C_0;
|
||||
}
|
||||
@end
|
||||
|
||||
#if 0
|
||||
int g6 = sizeof(T0_I0);
|
||||
int g7 = sizeof(T0_I1);
|
||||
int g8 = sizeof(T0_I2);
|
||||
#endif
|
||||
|
||||
@implementation T0_I0 @end
|
||||
@implementation T0_I1 @end
|
||||
@implementation T0_I2 @end
|
||||
|
||||
void f0(I2*i2,I3*i3,I4*i4,I5*i5,T0_I0*t0_i0,T0_I1*t0_i1,T0_I2*t0_i2) {
|
||||
}
|
||||
|
||||
// Thomas Wang's ui32 hash.
|
||||
unsigned hash_ui32_to_ui32(unsigned a) {
|
||||
a = (a ^ 61) ^ (a >> 16);
|
||||
a = a + (a << 3);
|
||||
a = a ^ (a >> 4);
|
||||
a = a * 0x27d4eb2d;
|
||||
a = a ^ (a >> 15);
|
||||
return a;
|
||||
}
|
||||
|
||||
unsigned char hash_ui32_to_ui8(unsigned ui) {
|
||||
ui = hash_ui32_to_ui32(ui);
|
||||
ui ^= ui>>8;
|
||||
ui ^= ui>>8;
|
||||
ui ^= ui>>8;
|
||||
return (unsigned char) ui;
|
||||
}
|
||||
|
||||
void *init() {
|
||||
unsigned i, N = 1024;
|
||||
unsigned char *p = malloc(N);
|
||||
for (i=0; i != N; ++i)
|
||||
p[i] = hash_ui32_to_ui8(i);
|
||||
return p;
|
||||
}
|
||||
|
||||
int main(){
|
||||
void *p = init();
|
||||
f0(p,p,p,p,p,p,p);
|
||||
}
|
Loading…
Reference in New Issue
Block a user