mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-05 18:28:29 +00:00
85f74f817a
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70302 91177308-0d34-0410-b5e6-96231b3b80d8
128 lines
1.7 KiB
Objective-C
128 lines
1.7 KiB
Objective-C
// 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);
|
|
}
|