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