mirror of
https://github.com/intel/llvm.git
synced 2026-01-26 21:53:12 +08:00
- This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). llvm-svn: 91446
30 lines
597 B
C
30 lines
597 B
C
// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o %t -fblocks
|
|
void (^f)(void) = ^{};
|
|
|
|
// rdar://6768379
|
|
int f0(int (^a0)()) {
|
|
return a0(1, 2, 3);
|
|
}
|
|
|
|
// Verify that attributes on blocks are set correctly.
|
|
typedef struct s0 T;
|
|
struct s0 {
|
|
int a[64];
|
|
};
|
|
|
|
// RUN: grep 'internal void @__f2_block_invoke_(.struct.s0\* noalias sret .*, .*, .* byval .*)' %t
|
|
struct s0 f2(struct s0 a0) {
|
|
return ^(struct s0 a1){ return a1; }(a0);
|
|
}
|
|
|
|
// This should not crash: rdar://6808051
|
|
void *P = ^{
|
|
void *Q = __func__;
|
|
};
|
|
|
|
void (^test1)(void) = ^(void) {
|
|
__block int i;
|
|
^ { i = 1; }();
|
|
};
|
|
|