diff options
author | John Thompson <John.Thompson.JTSoftware@gmail.com> | 2013-11-14 00:18:19 +0000 |
---|---|---|
committer | John Thompson <John.Thompson.JTSoftware@gmail.com> | 2013-11-14 00:18:19 +0000 |
commit | c2d8a5c7f5e683a9b269d0cf3bdef085e998cdf7 (patch) | |
tree | d0d09a2576e6f46d5be8f7477d6c0bac2f7d7854 | |
parent | e28da84c965b117500a44323ae9572126a141fcb (diff) | |
download | bcm5719-llvm-c2d8a5c7f5e683a9b269d0cf3bdef085e998cdf7.tar.gz bcm5719-llvm-c2d8a5c7f5e683a9b269d0cf3bdef085e998cdf7.zip |
[extra] pp-trace - Fix for PragmaWarning output, adding tests for the pragma callbacks.
llvm-svn: 194636
4 files changed, 241 insertions, 0 deletions
diff --git a/clang-tools-extra/pp-trace/PPCallbacksTracker.cpp b/clang-tools-extra/pp-trace/PPCallbacksTracker.cpp index 654c109a616..c0244184009 100644 --- a/clang-tools-extra/pp-trace/PPCallbacksTracker.cpp +++ b/clang-tools-extra/pp-trace/PPCallbacksTracker.cpp @@ -276,6 +276,7 @@ void PPCallbacksTracker::PragmaWarning(clang::SourceLocation Loc, SS << ", "; SS << Ids[i]; } + SS << "]"; appendArgument("Ids", SS.str()); } diff --git a/clang-tools-extra/test/pp-trace/pp-trace-pragma-general.cpp b/clang-tools-extra/test/pp-trace/pp-trace-pragma-general.cpp new file mode 100644 index 00000000000..ade06c9356b --- /dev/null +++ b/clang-tools-extra/test/pp-trace/pp-trace-pragma-general.cpp @@ -0,0 +1,107 @@ +// RUN: pp-trace -ignore FileChanged,MacroDefined %s | FileCheck --strict-whitespace %s + +#pragma clang diagnostic push +#pragma clang diagnostic pop +#pragma clang diagnostic ignored "-Wformat" +#pragma clang diagnostic warning "-Wformat" +#pragma clang diagnostic error "-Wformat" +#pragma clang diagnostic fatal "-Wformat" + +#pragma GCC diagnostic push +#pragma GCC diagnostic pop +#pragma GCC diagnostic ignored "-Wformat" +#pragma GCC diagnostic warning "-Wformat" +#pragma GCC diagnostic error "-Wformat" +#pragma GCC diagnostic fatal "-Wformat" + +// CHECK: --- +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:3:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnosticPush +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:3:15" +// CHECK-NEXT: Namespace: clang +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:4:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnosticPop +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:4:15" +// CHECK-NEXT: Namespace: clang +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:5:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:5:15" +// CHECK-NEXT: Namespace: clang +// CHECK-NEXT: Mapping: MAP_IGNORE +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:6:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:6:15" +// CHECK-NEXT: Namespace: clang +// CHECK-NEXT: Mapping: MAP_WARNING +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:7:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:7:15" +// CHECK-NEXT: Namespace: clang +// CHECK-NEXT: Mapping: MAP_ERROR +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:8:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:8:15" +// CHECK-NEXT: Namespace: clang +// CHECK-NEXT: Mapping: MAP_FATAL +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:10:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnosticPush +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:10:13" +// CHECK-NEXT: Namespace: GCC +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:11:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnosticPop +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:11:13" +// CHECK-NEXT: Namespace: GCC +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:12:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:12:13" +// CHECK-NEXT: Namespace: GCC +// CHECK-NEXT: Mapping: MAP_IGNORE +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:13:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:13:13" +// CHECK-NEXT: Namespace: GCC +// CHECK-NEXT: Mapping: MAP_WARNING +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:14:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:14:13" +// CHECK-NEXT: Namespace: GCC +// CHECK-NEXT: Mapping: MAP_ERROR +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:15:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDiagnostic +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-general.cpp:15:13" +// CHECK-NEXT: Namespace: GCC +// CHECK-NEXT: Mapping: MAP_FATAL +// CHECK-NEXT: Str: -Wformat +// CHECK-NEXT: - Callback: EndOfMainFile +// CHECK-NEXT: ... diff --git a/clang-tools-extra/test/pp-trace/pp-trace-pragma-ms.cpp b/clang-tools-extra/test/pp-trace/pp-trace-pragma-ms.cpp new file mode 100644 index 00000000000..22937474afb --- /dev/null +++ b/clang-tools-extra/test/pp-trace/pp-trace-pragma-ms.cpp @@ -0,0 +1,100 @@ +// RUN: pp-trace -ignore FileChanged,MacroDefined %s -target x86_64 -fms-extensions -w | FileCheck --strict-whitespace %s + +#pragma comment(compiler, "compiler comment") +#pragma comment(exestr, "exestr comment") +#pragma comment(lib, "lib comment") +#pragma comment(linker, "linker comment") +#pragma comment(user, "user comment") + +#pragma detect_mismatch("name argument", "value argument") + +#pragma __debug(assert) + +#pragma message("message argument") + +#pragma warning(push, 1) +#pragma warning(pop) +#pragma warning(disable : 1 2 3 ; error : 4 5 6 ; suppress : 7 8 9) + +// CHECK: --- +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:3:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaComment +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:3:9" +// CHECK-NEXT: Kind: compiler +// CHECK-NEXT: Str: compiler comment +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:4:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaComment +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:4:9" +// CHECK-NEXT: Kind: exestr +// CHECK-NEXT: Str: exestr comment +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:5:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaComment +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:5:9" +// CHECK-NEXT: Kind: lib +// CHECK-NEXT: Str: lib comment +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:6:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaComment +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:6:9" +// CHECK-NEXT: Kind: linker +// CHECK-NEXT: Str: linker comment +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:7:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaComment +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:7:9" +// CHECK-NEXT: Kind: user +// CHECK-NEXT: Str: user comment +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:9:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDetectMismatch +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:9:9" +// CHECK-NEXT: Name: name argument +// CHECK-NEXT: Value: value argument +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:11:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:13:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaMessage +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:13:9" +// CHECK-NEXT: Namespace: +// CHECK-NEXT: Kind: PMK_Message +// CHECK-NEXT: Str: message argument +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:15:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaWarningPush +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:15:9" +// CHECK-NEXT: Level: 1 +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:16:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaWarningPop +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:16:9" +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:17:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaWarning +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:17:9" +// CHECK-NEXT: WarningSpec: disable +// CHECK-NEXT: Ids: [1, 2, 3] +// CHECK-NEXT: - Callback: PragmaWarning +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:17:9" +// CHECK-NEXT: WarningSpec: error +// CHECK-NEXT: Ids: [4, 5, 6] +// CHECK-NEXT: - Callback: PragmaWarning +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-ms.cpp:17:9" +// CHECK-NEXT: WarningSpec: suppress +// CHECK-NEXT: Ids: [7, 8, 9] +// CHECK-NEXT: - Callback: EndOfMainFile +// CHECK-NEXT: ... diff --git a/clang-tools-extra/test/pp-trace/pp-trace-pragma-opencl.cpp b/clang-tools-extra/test/pp-trace/pp-trace-pragma-opencl.cpp new file mode 100644 index 00000000000..cfd72c0d464 --- /dev/null +++ b/clang-tools-extra/test/pp-trace/pp-trace-pragma-opencl.cpp @@ -0,0 +1,33 @@ +// RUN: pp-trace -ignore FileChanged,MacroDefined %s -x cl | FileCheck --strict-whitespace %s + +#pragma OPENCL EXTENSION all : disable +#pragma OPENCL EXTENSION cl_khr_int64_base_atomics : disable +#pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable + +// CHECK: --- +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:3:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaOpenCLExtension +// CHECK-NEXT: NameLoc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:3:26" +// CHECK-NEXT: Name: all +// CHECK-NEXT: StateLoc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:3:32" +// CHECK-NEXT: State: 0 +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:4:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaOpenCLExtension +// CHECK-NEXT: NameLoc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:4:26" +// CHECK-NEXT: Name: cl_khr_int64_base_atomics +// CHECK-NEXT: StateLoc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:4:54" +// CHECK-NEXT: State: 0 +// CHECK-NEXT: - Callback: PragmaDirective +// CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:5:1" +// CHECK-NEXT: Introducer: PIK_HashPragma +// CHECK-NEXT: - Callback: PragmaOpenCLExtension +// CHECK-NEXT: NameLoc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:5:26" +// CHECK-NEXT: Name: cl_khr_int64_base_atomics +// CHECK-NEXT: StateLoc: "{{.*}}{{[/\\]}}pp-trace-pragma-opencl.cpp:5:54" +// CHECK-NEXT: State: 1 +// CHECK-NEXT: - Callback: EndOfMainFile +// CHECK-NEXT: ... |