forked from OSchip/llvm-project
parent
19de6c75fd
commit
c19fd6eadc
|
@ -1,17 +0,0 @@
|
|||
// RUN: %llvmgcc -S %s -o /dev/null
|
||||
// rdar://6394879
|
||||
|
||||
@interface bork
|
||||
- (id)B:(void (^)())blk;
|
||||
- (void)C;
|
||||
@end
|
||||
@implementation bork
|
||||
- (id)B:(void (^)())blk {
|
||||
__attribute__((__blocks__(byref))) bork* new = ((void *)0);
|
||||
blk();
|
||||
}
|
||||
- (void)C {
|
||||
__attribute__((__blocks__(byref))) id var;
|
||||
[self B:^() {}];
|
||||
}
|
||||
@end
|
|
@ -1,14 +0,0 @@
|
|||
// RUN: %llvmgcc -x objective-c -S %s -fobjc-gc -o - | grep objc_assign_strongCast
|
||||
// rdar://5541393
|
||||
|
||||
typedef struct {
|
||||
void (^ivarBlock)(void);
|
||||
} StructWithBlock_t;
|
||||
|
||||
int main(char *argc, char *argv[]) {
|
||||
StructWithBlock_t *swbp = (StructWithBlock_t *)malloc(sizeof(StructWithBlock_t*));
|
||||
__block int i = 10;
|
||||
// assigning a Block into an struct slot should elicit a write-barrier under GC
|
||||
swbp->ivarBlock = ^ { ++i; };
|
||||
return 0;
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
/* RUN: %llvmgcc -w -x objective-c -S %s -o /dev/null -pedantic-errors
|
||||
rdar://6551276 */
|
||||
|
||||
void foo(const unsigned short *);
|
||||
void bar() {
|
||||
unsigned short *s[3];
|
||||
int i;
|
||||
@try { } @catch (id anException) { }
|
||||
foo(2+s[i]);
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
// RUN: %llvmgcc -S %s -fobjc-abi-version=2 -o %t
|
||||
// RUN: grep {OBJC_CLASS_\\\$_A.*section.*__DATA, __objc_data.*align} %t
|
||||
// XTARGET: darwin
|
||||
|
||||
@interface A
|
||||
@end
|
||||
|
||||
@implementation A
|
||||
@end
|
|
@ -1,44 +0,0 @@
|
|||
// RUN: %llvmgcc -S -x objective-c -m64 -fobjc-abi-version=2 %s -o %t
|
||||
// RUN: grep {OBJC_CLASS_RO_\\\$_I4} %t | grep {i32 0, i32 1, i32 2, i32 0}
|
||||
// RUN: grep {OBJC_CLASS_RO_\\\$_I2} %t | grep {i32 0, i32 1, i32 1, i32 0}
|
||||
// RUN: grep {OBJC_CLASS_RO_\\\$_I5} %t | grep {i32 0, i32 0, i32 0, i32 0}
|
||||
// XTARGET: darwin
|
||||
|
||||
// Test instance variable sizing when base class ends in bitfield
|
||||
@interface I3 {
|
||||
unsigned int _iv2 :1;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface I4 : I3 {
|
||||
char _iv4;
|
||||
}
|
||||
@end
|
||||
|
||||
// Test case with no instance variables in derived class
|
||||
@interface I1 {
|
||||
unsigned int _iv2 :1;
|
||||
}
|
||||
@end
|
||||
|
||||
@interface I2 : I1 {
|
||||
}
|
||||
@end
|
||||
|
||||
// Test case with no instance variables anywhere
|
||||
@interface I6 {
|
||||
}
|
||||
@end
|
||||
|
||||
@interface I5 : I6 {
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation I4
|
||||
@end
|
||||
|
||||
@implementation I2
|
||||
@end
|
||||
|
||||
@implementation I5
|
||||
@end
|
|
@ -1,127 +0,0 @@
|
|||
// 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);
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
/* RUN: %llvmgcc -w -x objective-c -S %s -o - | grep {__utf16_string_1} | grep {internal unnamed_addr constant} | grep {12 x i8}
|
||||
rdar://7095855 rdar://7115749 */
|
||||
|
||||
void *P = @"iPod™";
|
||||
|
Loading…
Reference in New Issue