Author: Jeremy Morse Date: 2021-04-26T10:07:22+01:00 New Revision: 3c9bcf0e3549d89b31e19e67a5a16babdee2c72d
URL: https://github.com/llvm/llvm-project/commit/3c9bcf0e3549d89b31e19e67a5a16babdee2c72d DIFF: https://github.com/llvm/llvm-project/commit/3c9bcf0e3549d89b31e19e67a5a16babdee2c72d.diff LOG: [Clang][Coroutine][DebugInfo] Relax test ordering requirement The test added in D97533 (and modified by this patch) has some overly strict printed metadata ordering requirements, specifically the interleaving of DILocalVariable nodes and DILocation nodes. Slight changes in metadata emission can easily break this unfortunately. This patch stops after clang codegen rather than allowing the coro splitter to run, and reduces the need for ordering: it picks out the DILocalVariable nodes being sought, in any order (CHECK-DAG), and doesn't examine any DILocations. The implicit CHECK-NOT is what's important: the test seeks to ensure a duplicate set of DILocalVariables aren't emitted in the same scope. Differential Revision: https://reviews.llvm.org/D100298 Added: Modified: clang/test/CodeGenCoroutines/coro-dwarf.cpp Removed: ################################################################################ diff --git a/clang/test/CodeGenCoroutines/coro-dwarf.cpp b/clang/test/CodeGenCoroutines/coro-dwarf.cpp index eacbd5b39d2a..391d37d23c0d 100644 --- a/clang/test/CodeGenCoroutines/coro-dwarf.cpp +++ b/clang/test/CodeGenCoroutines/coro-dwarf.cpp @@ -1,4 +1,7 @@ -// RUN: %clang_cc1 -std=c++2a -fcoroutines-ts -triple=x86_64 -dwarf-version=4 -debug-info-kind=limited -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -disable-llvm-optzns -std=c++2a -fcoroutines-ts \ +// RUN: -triple=x86_64 -dwarf-version=4 -debug-info-kind=limited \ +// RUN: -emit-llvm -o - %s | \ +// RUN: FileCheck %s --implicit-check-not=DILocalVariable namespace std::experimental { template <typename... T> struct coroutine_traits; @@ -63,15 +66,7 @@ void f_coro(int val, MoveOnly moParam, MoveAndCopy mcParam) { } // CHECK: ![[SP:[0-9]+]] = distinct !DISubprogram(name: "f_coro", linkageName: "_Z6f_coroi8MoveOnly11MoveAndCopy" -// CHECK: !{{[0-9]+}} = !DILocalVariable(name: "val", arg: 1, scope: ![[SP]], file: !8, line: 60, type: !{{[0-9]+}}) -// CHECK: !{{[0-9]+}} = !DILocation(line: 60, column: 17, scope: ![[SP]]) -// CHECK: !{{[0-9]+}} = !DILocalVariable(name: "moParam", arg: 2, scope: ![[SP]], file: !8, line: 60, type: !{{[0-9]+}}) -// CHECK: !{{[0-9]+}} = !DILocation(line: 60, column: 31, scope: ![[SP]]) -// CHECK: !{{[0-9]+}} = !DILocalVariable(name: "mcParam", arg: 3, scope: ![[SP]], file: !8, line: 60, type: !{{[0-9]+}}) -// CHECK: !{{[0-9]+}} = !DILocation(line: 60, column: 52, scope: ![[SP]]) -// CHECK: !{{[0-9]+}} = !DILocation(line: 60, column: 61, scope: ![[SP]]) -// CHECK: !{{[0-9]+}} = !DILocation(line: 60, column: 6, scope: ![[SP]]) -// CHECK: !{{[0-9]+}} = !DILocation(line: 0, scope: ![[SP]]) -// CHECK-NOT: !{{[0-9]+}} = !DILocalVariable(name: "val", scope: ![[SP]], type: !{{[0-9]+}}, flags: DIFlagArtificial) -// CHECK-NOT: !{{[0-9]+}} = !DILocalVariable(name: "moParam", scope: ![[SP]], type: !{{[0-9]+}}, flags: DIFlagArtificial) -// CHECK-NOT:: !{{[0-9]+}} = !DILocalVariable(name: "mcParam", scope: ![[SP]], type: !{{[0-9]+}}, flags: DIFlagArtificial) +// CHECK: !{{[0-9]+}} = !DILocalVariable(name: "val", arg: 1, scope: ![[SP]], file: !8, line: {{[0-9]+}}, type: !{{[0-9]+}}) +// CHECK: !{{[0-9]+}} = !DILocalVariable(name: "moParam", arg: 2, scope: ![[SP]], file: !8, line: {{[0-9]+}}, type: !{{[0-9]+}}) +// CHECK: !{{[0-9]+}} = !DILocalVariable(name: "mcParam", arg: 3, scope: ![[SP]], file: !8, line: {{[0-9]+}}, type: !{{[0-9]+}}) +// CHECK: !{{[0-9]+}} = !DILocalVariable(name: "__promise", _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits