1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s 2*f4a2713aSLionel Sambuc 3*f4a2713aSLionel Sambuc // CHECK: @__func__.plainFunction = private unnamed_addr constant [14 x i8] c"plainFunction\00" 4*f4a2713aSLionel Sambuc // CHECK: @__PRETTY_FUNCTION__.plainFunction = private unnamed_addr constant [21 x i8] c"void plainFunction()\00" 5*f4a2713aSLionel Sambuc // CHECK: @__func__.externFunction = private unnamed_addr constant [15 x i8] c"externFunction\00" 6*f4a2713aSLionel Sambuc // CHECK: @__PRETTY_FUNCTION__.externFunction = private unnamed_addr constant [22 x i8] c"void externFunction()\00" 7*f4a2713aSLionel Sambuc // CHECK: @__func__.privateExternFunction = private unnamed_addr constant [22 x i8] c"privateExternFunction\00" 8*f4a2713aSLionel Sambuc // CHECK: @__PRETTY_FUNCTION__.privateExternFunction = private unnamed_addr constant [29 x i8] c"void privateExternFunction()\00" 9*f4a2713aSLionel Sambuc // CHECK: @__func__.__captured_stmt = private unnamed_addr constant [25 x i8] c"functionWithCapturedStmt\00" 10*f4a2713aSLionel Sambuc // CHECK: @__PRETTY_FUNCTION__.__captured_stmt = private unnamed_addr constant [32 x i8] c"void functionWithCapturedStmt()\00" 11*f4a2713aSLionel Sambuc // CHECK: @__func__.staticFunction = private unnamed_addr constant [15 x i8] c"staticFunction\00" 12*f4a2713aSLionel Sambuc // CHECK: @__PRETTY_FUNCTION__.staticFunction = private unnamed_addr constant [22 x i8] c"void staticFunction()\00" 13*f4a2713aSLionel Sambuc 14*f4a2713aSLionel Sambuc int printf(const char *, ...); 15*f4a2713aSLionel Sambuc 16*f4a2713aSLionel Sambuc void plainFunction() { 17*f4a2713aSLionel Sambuc printf("__func__ %s\n", __func__); 18*f4a2713aSLionel Sambuc printf("__FUNCTION__ %s\n", __FUNCTION__); 19*f4a2713aSLionel Sambuc printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__); 20*f4a2713aSLionel Sambuc } 21*f4a2713aSLionel Sambuc 22*f4a2713aSLionel Sambuc extern void externFunction() { 23*f4a2713aSLionel Sambuc printf("__func__ %s\n", __func__); 24*f4a2713aSLionel Sambuc printf("__FUNCTION__ %s\n", __FUNCTION__); 25*f4a2713aSLionel Sambuc printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__); 26*f4a2713aSLionel Sambuc } 27*f4a2713aSLionel Sambuc 28*f4a2713aSLionel Sambuc __private_extern__ void privateExternFunction() { 29*f4a2713aSLionel Sambuc printf("__func__ %s\n", __func__); 30*f4a2713aSLionel Sambuc printf("__FUNCTION__ %s\n", __FUNCTION__); 31*f4a2713aSLionel Sambuc printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__); 32*f4a2713aSLionel Sambuc } 33*f4a2713aSLionel Sambuc 34*f4a2713aSLionel Sambuc void functionWithCapturedStmt() { 35*f4a2713aSLionel Sambuc #pragma clang __debug captured 36*f4a2713aSLionel Sambuc { 37*f4a2713aSLionel Sambuc printf("__func__ %s\n", __func__); 38*f4a2713aSLionel Sambuc printf("__FUNCTION__ %s\n", __FUNCTION__); 39*f4a2713aSLionel Sambuc printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__); 40*f4a2713aSLionel Sambuc } 41*f4a2713aSLionel Sambuc } 42*f4a2713aSLionel Sambuc 43*f4a2713aSLionel Sambuc static void staticFunction() { 44*f4a2713aSLionel Sambuc printf("__func__ %s\n", __func__); 45*f4a2713aSLionel Sambuc printf("__FUNCTION__ %s\n", __FUNCTION__); 46*f4a2713aSLionel Sambuc printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__); 47*f4a2713aSLionel Sambuc } 48*f4a2713aSLionel Sambuc 49*f4a2713aSLionel Sambuc int main() { 50*f4a2713aSLionel Sambuc plainFunction(); 51*f4a2713aSLionel Sambuc externFunction(); 52*f4a2713aSLionel Sambuc privateExternFunction(); 53*f4a2713aSLionel Sambuc functionWithCapturedStmt(); 54*f4a2713aSLionel Sambuc staticFunction(); 55*f4a2713aSLionel Sambuc 56*f4a2713aSLionel Sambuc return 0; 57*f4a2713aSLionel Sambuc } 58