[PATCH] D47746: [lit, pdb] Fix func-symbols.test (on Windows)

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 4 17:27:07 PDT 2018


Lgtm
On Mon, Jun 4, 2018 at 3:29 PM Stella Stamenova via Phabricator <
reviews at reviews.llvm.org> wrote:

> stella.stamenova created this revision.
> stella.stamenova added reviewers: asmith, zturner, labath.
> Herald added a subscriber: llvm-commits.
>
> This test was failing sporadically on windows because the order in which
> the symbols are generated was different between builds. To fix the test, we
> need to run FileCheck twice - once for each set of symbols we want to
> verify. The test only runs on Windows.
>
>
> Repository:
>   rL LLVM
>
> https://reviews.llvm.org/D47746
>
> Files:
>   lit/SymbolFile/PDB/func-symbols.test
>
>
> Index: lit/SymbolFile/PDB/func-symbols.test
> ===================================================================
> --- lit/SymbolFile/PDB/func-symbols.test
> +++ lit/SymbolFile/PDB/func-symbols.test
> @@ -2,46 +2,47 @@
>  RUN: clang-cl -m32 /Z7 /c /GS- %S/Inputs/FuncSymbolsTestMain.cpp /o
> %T/FuncSymbolsTestMain.cpp.obj
>  RUN: clang-cl -m32 /Z7 /c /GS- %S/Inputs/FuncSymbols.cpp /o
> %T/FuncSymbols.cpp.obj
>  RUN: link %T/FuncSymbolsTestMain.cpp.obj %T/FuncSymbols.cpp.obj /DEBUG
> /nodefaultlib /Entry:main /OUT:%T/FuncSymbolsTest.exe
> -RUN: lldb-test symbols %T/FuncSymbolsTest.exe | FileCheck %s
> +RUN: lldb-test symbols %T/FuncSymbolsTest.exe | FileCheck
> --check-prefix=CHECK-ONE %s
> +RUN: lldb-test symbols %T/FuncSymbolsTest.exe | FileCheck
> --check-prefix=CHECK-TWO %s
>
>  ; Link multiple objects
>  ; In this test, We don't check demangled name of a mangled function.
>
> -CHECK: Module [[MD:.*]]
> -CHECK-DAG: {{.*}}: SymbolVendor ([[MD]])
> -CHECK-DAG: [[TY0:.*]]:   Type{[[UID0:.*]]} , name = "Func_arg_array",
> decl = FuncSymbolsTestMain.cpp:3, compiler_type = {{.*}} int (int *)
> -CHECK-DAG: [[TY1:.*]]:   Type{[[UID1:.*]]} , name = "Func_arg_void", decl
> = FuncSymbolsTestMain.cpp:4, compiler_type = {{.*}} void (void)
> -CHECK-DAG: [[TY2:.*]]:   Type{[[UID2:.*]]} , name = "Func_arg_none", decl
> = FuncSymbolsTestMain.cpp:5, compiler_type = {{.*}} void (void)
> -CHECK-DAG: [[TY3:.*]]:   Type{[[UID3:.*]]} , name = "Func_varargs", decl
> = FuncSymbolsTestMain.cpp:6, compiler_type = {{.*}} void (...)
> -CHECK-DAG: [[TY4:.*]]:   Type{[[UID4:.*]]} , name = "NS::Func", decl =
> FuncSymbolsTestMain.cpp:28, compiler_type = {{.*}} void (signed char, int)
> -CHECK-DAG: [[TY5:.*]]:   Type{[[UID5:.*]]} , name = "main", decl =
> FuncSymbolsTestMain.cpp:44, compiler_type = {{.*}} int (void)
> -CHECK-DAG: [[TY6:.*]]:   Type{[[UID6:.*]]} , name = "`anonymous
> namespace'::Func", decl = FuncSymbolsTestMain.cpp:24, compiler_type =
> {{.*}} void (int, const long, volatile _Bool, ...)
> -CHECK-DAG: [[TY7:.*]]:   Type{[[UID7:.*]]} , name = "StaticFunction",
> decl = FuncSymbolsTestMain.cpp:35, compiler_type = {{.*}} long (int)
> -CHECK-DAG: [[TY8:.*]]:   Type{[[UID8:.*]]} , name =
> "MemberTest::A::Func", decl = FuncSymbolsTestMain.cpp:12, compiler_type =
> {{.*}} int (int, ...)
> -CHECK-DAG: [[TY9:.*]]:   Type{[[UID9:.*]]} , name =
> "TemplateFunc<1,int>", decl = FuncSymbolsTestMain.cpp:18, compiler_type =
> {{.*}} void (int)
> -CHECK-DAG: [[TY10:.*]]:   Type{[[UID10:.*]]} , name =
> "TemplateFunc<1,int,int,int>", decl = FuncSymbolsTestMain.cpp:18,
> compiler_type = {{.*}} void (int, int, int)
> -CHECK-DAG: [[TY11:.*]]:   Type{[[UID11:.*]]} , name = "InlinedFunction",
> decl = FuncSymbolsTestMain.cpp:40, compiler_type = {{.*}} void (long)
> +CHECK-ONE: Module [[MD:.*]]
> +CHECK-ONE-DAG: {{.*}}: SymbolVendor ([[MD]])
> +CHECK-ONE-DAG: [[TY0:.*]]:   Type{[[UID0:.*]]} , name = "Func_arg_array",
> decl = FuncSymbolsTestMain.cpp:3, compiler_type = {{.*}} int (int *)
> +CHECK-ONE-DAG: [[TY1:.*]]:   Type{[[UID1:.*]]} , name = "Func_arg_void",
> decl = FuncSymbolsTestMain.cpp:4, compiler_type = {{.*}} void (void)
> +CHECK-ONE-DAG: [[TY2:.*]]:   Type{[[UID2:.*]]} , name = "Func_arg_none",
> decl = FuncSymbolsTestMain.cpp:5, compiler_type = {{.*}} void (void)
> +CHECK-ONE-DAG: [[TY3:.*]]:   Type{[[UID3:.*]]} , name = "Func_varargs",
> decl = FuncSymbolsTestMain.cpp:6, compiler_type = {{.*}} void (...)
> +CHECK-ONE-DAG: [[TY4:.*]]:   Type{[[UID4:.*]]} , name = "NS::Func", decl
> = FuncSymbolsTestMain.cpp:28, compiler_type = {{.*}} void (signed char, int)
> +CHECK-ONE-DAG: [[TY5:.*]]:   Type{[[UID5:.*]]} , name = "main", decl =
> FuncSymbolsTestMain.cpp:44, compiler_type = {{.*}} int (void)
> +CHECK-ONE-DAG: [[TY6:.*]]:   Type{[[UID6:.*]]} , name = "`anonymous
> namespace'::Func", decl = FuncSymbolsTestMain.cpp:24, compiler_type =
> {{.*}} void (int, const long, volatile _Bool, ...)
> +CHECK-ONE-DAG: [[TY7:.*]]:   Type{[[UID7:.*]]} , name = "StaticFunction",
> decl = FuncSymbolsTestMain.cpp:35, compiler_type = {{.*}} long (int)
> +CHECK-ONE-DAG: [[TY8:.*]]:   Type{[[UID8:.*]]} , name =
> "MemberTest::A::Func", decl = FuncSymbolsTestMain.cpp:12, compiler_type =
> {{.*}} int (int, ...)
> +CHECK-ONE-DAG: [[TY9:.*]]:   Type{[[UID9:.*]]} , name =
> "TemplateFunc<1,int>", decl = FuncSymbolsTestMain.cpp:18, compiler_type =
> {{.*}} void (int)
> +CHECK-ONE-DAG: [[TY10:.*]]:   Type{[[UID10:.*]]} , name =
> "TemplateFunc<1,int,int,int>", decl = FuncSymbolsTestMain.cpp:18,
> compiler_type = {{.*}} void (int, int, int)
> +CHECK-ONE-DAG: [[TY11:.*]]:   Type{[[UID11:.*]]} , name =
> "InlinedFunction", decl = FuncSymbolsTestMain.cpp:40, compiler_type =
> {{.*}} void (long)
>
> -; We expect new types observed in another compile unit
> -CHECK-DAG: [[TY30:.*]]:   Type{[[UID30:.*]]} , name = "FunctionCall",
> decl = FuncSymbols.cpp:13, compiler_type = {{.*}} void (void)
> -CHECK-DAG: [[TY31:.*]]:   Type{[[UID31:.*]]} , name = "`anonymous
> namespace'::StaticFunction", decl = FuncSymbols.cpp:4, compiler_type =
> {{.*}} long (int)
> -CHECK-DAG: [[TY32:.*]]:   Type{[[UID32:.*]]} , name = "InlinedFunction",
> decl = FuncSymbols.cpp:10, compiler_type = {{.*}} int (long)
> +CHECK-ONE: {{.*}}:   CompileUnit{{.*}}, language = "c++", file =
> '{{.*}}\FuncSymbolsTestMain.cpp'
> +CHECK-ONE-DAG: Function{[[UID0]]}, mangled = ?Func_arg_array@@YAHQAH at Z,
> demangled = {{.*}}, type = [[TY0]]
> +CHECK-ONE-DAG: Function{[[UID1]]}, mangled = ?Func_arg_void@@YAXXZ,
> demangled = {{.*}}, type = [[TY1]]
> +CHECK-ONE-DAG: Function{[[UID2]]}, mangled = ?Func_arg_none@@YAXXZ,
> demangled = {{.*}}, type = [[TY2]]
> +CHECK-ONE-DAG: Function{[[UID3]]}, mangled = ?Func_varargs@@YAXZZ,
> demangled = {{.*}}, type = [[TY3]]
> +CHECK-ONE-DAG: Function{[[UID4]]}, mangled = ?Func at NS@@YAXDH at Z,
> demangled = {{.*}}, type = [[TY4]]
> +CHECK-ONE-DAG: Function{[[UID5]]}, mangled = _main, demangled = {{.*}},
> type = [[TY5]]
> +CHECK-ONE-DAG: Function{[[UID6]]}, demangled = {{.*}}`anonymous
> namespace'::Func{{.*}}, type = [[TY6]]
> +CHECK-ONE-DAG: Function{[[UID7]]}, demangled =
> {{.*}}StaticFunction{{.*}}, type = [[TY7]]
> +CHECK-ONE-DAG: Function{[[UID8]]}, mangled = ?Func at A@MemberTest@@QAAHHZZ,
> demangled = {{.*}}, type = [[TY8]]
> +CHECK-ONE-DAG: Function{[[UID9]]}, mangled = ??$TemplateFunc@$00H@@YAXH at Z,
> demangled = {{.*}}, type = [[TY9]]
> +CHECK-ONE-DAG: Function{[[UID10]]}, mangled = ??$TemplateFunc@$00HHH@
> @YAXHHH at Z, demangled = {{.*}}, type = [[TY10]]
> +CHECK-ONE-DAG: Function{[[UID11]]}, mangled = ?InlinedFunction@@YAXJ at Z,
> demangled = {{.*}}, type = [[TY11]]
>
> -CHECK: {{.*}}:   CompileUnit{{.*}}, language = "c++", file =
> '{{.*}}\FuncSymbols.cpp'
> -CHECK-DAG: Function{[[UID30]]}, mangled = ?FunctionCall@@YAXXZ,
> demangled = {{.*}}, type = [[TY30]]
> -CHECK-DAG: Function{[[UID31]]}, demangled = {{.*}}`anonymous
> namespace'::StaticFunction{{.*}}, type = [[TY31]]
> -CHECK-DAG: Function{[[UID32]]}, demangled = {{.*}}InlinedFunction{{.*}},
> type = [[TY32]]
> +; We expect new types observed in another compile unit
> +CHECK-TWO-DAG: [[TY30:.*]]:   Type{[[UID30:.*]]} , name = "FunctionCall",
> decl = FuncSymbols.cpp:13, compiler_type = {{.*}} void (void)
> +CHECK-TWO-DAG: [[TY31:.*]]:   Type{[[UID31:.*]]} , name = "`anonymous
> namespace'::StaticFunction", decl = FuncSymbols.cpp:4, compiler_type =
> {{.*}} long (int)
> +CHECK-TWO-DAG: [[TY32:.*]]:   Type{[[UID32:.*]]} , name =
> "InlinedFunction", decl = FuncSymbols.cpp:10, compiler_type = {{.*}} int
> (long)
>
> -CHECK: {{.*}}:   CompileUnit{{.*}}, language = "c++", file =
> '{{.*}}\FuncSymbolsTestMain.cpp'
> -CHECK-DAG: Function{[[UID0]]}, mangled = ?Func_arg_array@@YAHQAH at Z,
> demangled = {{.*}}, type = [[TY0]]
> -CHECK-DAG: Function{[[UID1]]}, mangled = ?Func_arg_void@@YAXXZ,
> demangled = {{.*}}, type = [[TY1]]
> -CHECK-DAG: Function{[[UID2]]}, mangled = ?Func_arg_none@@YAXXZ,
> demangled = {{.*}}, type = [[TY2]]
> -CHECK-DAG: Function{[[UID3]]}, mangled = ?Func_varargs@@YAXZZ, demangled
> = {{.*}}, type = [[TY3]]
> -CHECK-DAG: Function{[[UID4]]}, mangled = ?Func at NS@@YAXDH at Z, demangled =
> {{.*}}, type = [[TY4]]
> -CHECK-DAG: Function{[[UID5]]}, mangled = _main, demangled = {{.*}}, type
> = [[TY5]]
> -CHECK-DAG: Function{[[UID6]]}, demangled = {{.*}}`anonymous
> namespace'::Func{{.*}}, type = [[TY6]]
> -CHECK-DAG: Function{[[UID7]]}, demangled = {{.*}}StaticFunction{{.*}},
> type = [[TY7]]
> -CHECK-DAG: Function{[[UID8]]}, mangled = ?Func at A@MemberTest@@QAAHHZZ,
> demangled = {{.*}}, type = [[TY8]]
> -CHECK-DAG: Function{[[UID9]]}, mangled = ??$TemplateFunc@$00H@@YAXH at Z,
> demangled = {{.*}}, type = [[TY9]]
> -CHECK-DAG: Function{[[UID10]]}, mangled = ??$TemplateFunc@$00HHH@
> @YAXHHH at Z, demangled = {{.*}}, type = [[TY10]]
> -CHECK-DAG: Function{[[UID11]]}, mangled = ?InlinedFunction@@YAXJ at Z,
> demangled = {{.*}}, type = [[TY11]]
> +CHECK-TWO: {{.*}}:   CompileUnit{{.*}}, language = "c++", file =
> '{{.*}}\FuncSymbols.cpp'
> +CHECK-TWO-DAG: Function{[[UID30]]}, mangled = ?FunctionCall@@YAXXZ,
> demangled = {{.*}}, type = [[TY30]]
> +CHECK-TWO-DAG: Function{[[UID31]]}, demangled = {{.*}}`anonymous
> namespace'::StaticFunction{{.*}}, type = [[TY31]]
> +CHECK-TWO-DAG: Function{[[UID32]]}, demangled =
> {{.*}}InlinedFunction{{.*}}, type = [[TY32]]
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180604/008057a7/attachment.html>


More information about the llvm-commits mailing list