1 // RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-pc-linux-gnu| FileCheck %s 2 3 // Test address-of overloading logic 4 int test5(int); 5 template <typename T> 6 T test5(T) __attribute__((enable_if(1, "better than non-template"))); 7 8 // CHECK: @_Z5test5IiEUa9enable_ifIXLi1EEET_S0_ 9 int (*Ptr)(int) = &test5; 10 11 // Test itanium mangling for attribute enable_if 12 13 // CHECK: _Z5test1Ua9enable_ifIXeqfL0p_Li1EEEi 14 void test1(int i) __attribute__((enable_if(i == 1, ""))) {} 15 16 void ext(); 17 // CHECK: _Z5test2Ua9enable_ifIXneadL_Z3extvELi0EEEi 18 void test2(int i) __attribute__((enable_if(&ext != 0, ""))) {} 19 20 // CHECK: _Z5test3Ua9enable_ifIXeqfL0p_Li1EEXeqfL0p0_Li2EEEii 21 void test3(int i, int j) __attribute__((enable_if(i == 1, ""), enable_if(j == 2, ""))) {} 22 23 // CHECK: _ZN5test4IdE1fEUa9enable_ifIXeqfL0p_Li1EEXeqfL0p0_Li2EEEi 24 template <typename T> 25 class test4 { 26 virtual void f(int i, int j) __attribute__((enable_if(i == 1, ""))) __attribute__((enable_if(j == 2, ""))); 27 }; 28 29 template class test4<double>; 30