115241ba4SReid Kleckner // This test uses PrintFunctionNames with -fdelayed-template-parsing because it 215241ba4SReid Kleckner // happens to use a RecursiveASTVisitor that forces deserialization of AST 315241ba4SReid Kleckner // files. 415241ba4SReid Kleckner // 5*6fd35373SReid Kleckner // RUN: %clang_cc1 -triple %itanium_abi_triple -fdelayed-template-parsing \ 6*6fd35373SReid Kleckner // RUN: -std=c++14 -emit-pch -o %t.pch %s 7*6fd35373SReid Kleckner // RUN: %clang_cc1 -triple %itanium_abi_triple \ 8*6fd35373SReid Kleckner // RUN: -load %llvmshlibdir/PrintFunctionNames%pluginext \ 915241ba4SReid Kleckner // RUN: -add-plugin print-fns -std=c++14 -include-pch %t.pch %s -emit-llvm \ 1015241ba4SReid Kleckner // RUN: -fdelayed-template-parsing -debug-info-kind=limited \ 1115241ba4SReid Kleckner // RUN: -o %t.ll 2>&1 | FileCheck --check-prefix=DECLS %s 1215241ba4SReid Kleckner // RUN: FileCheck --check-prefix=IR %s < %t.ll 1315241ba4SReid Kleckner // 1415241ba4SReid Kleckner // REQUIRES: plugins, examples 1515241ba4SReid Kleckner 1615241ba4SReid Kleckner // DECLS: top-level-decl: "func" 1715241ba4SReid Kleckner 1815241ba4SReid Kleckner // IR: define {{.*}}void @_Z4funcv() 1915241ba4SReid Kleckner 2015241ba4SReid Kleckner #ifndef HEADER 2115241ba4SReid Kleckner #define HEADER 2215241ba4SReid Kleckner 2315241ba4SReid Kleckner struct nullopt_t { nullopt_tnullopt_t2415241ba4SReid Kleckner constexpr explicit nullopt_t(int) {} 2515241ba4SReid Kleckner }; 2615241ba4SReid Kleckner constexpr nullopt_t nullopt(0); 2715241ba4SReid Kleckner 2815241ba4SReid Kleckner #else 2915241ba4SReid Kleckner func()3015241ba4SReid Klecknervoid func() { } 3115241ba4SReid Kleckner 3215241ba4SReid Kleckner #endif 33