diff options
Diffstat (limited to 'clang/test/CodeGen/enable_if.c')
-rw-r--r-- | clang/test/CodeGen/enable_if.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/clang/test/CodeGen/enable_if.c b/clang/test/CodeGen/enable_if.c index d1173d291ad..f863d80c14a 100644 --- a/clang/test/CodeGen/enable_if.c +++ b/clang/test/CodeGen/enable_if.c @@ -49,3 +49,34 @@ void test2() { // CHECK: store i8* bitcast (void (i32)* @_Z3barUa9enable_ifIXLi1EEEi to i8*) vp1 = (void*)bar; } + +void baz(int m) __attribute__((overloadable, enable_if(1, ""))); +void baz(int m) __attribute__((overloadable)); +// CHECK-LABEL: define void @test3 +void test3() { + // CHECK: store void (i32)* @_Z3bazUa9enable_ifIXLi1EEEi + void (*p)(int) = baz; + // CHECK: store void (i32)* @_Z3bazUa9enable_ifIXLi1EEEi + void (*p2)(int) = &baz; + // CHECK: store void (i32)* @_Z3bazUa9enable_ifIXLi1EEEi + p = baz; + // CHECK: store void (i32)* @_Z3bazUa9enable_ifIXLi1EEEi + p = &baz; +} + + +const int TRUEFACTS = 1; +void qux(int m) __attribute__((overloadable, enable_if(1, ""), + enable_if(TRUEFACTS, ""))); +void qux(int m) __attribute__((overloadable, enable_if(1, ""))); +// CHECK-LABEL: define void @test4 +void test4() { + // CHECK: store void (i32)* @_Z3quxUa9enable_ifIXLi1EEXL_Z9TRUEFACTSEEEi + void (*p)(int) = qux; + // CHECK: store void (i32)* @_Z3quxUa9enable_ifIXLi1EEXL_Z9TRUEFACTSEEEi + void (*p2)(int) = &qux; + // CHECK: store void (i32)* @_Z3quxUa9enable_ifIXLi1EEXL_Z9TRUEFACTSEEEi + p = qux; + // CHECK: store void (i32)* @_Z3quxUa9enable_ifIXLi1EEXL_Z9TRUEFACTSEEEi + p = &qux; +} |