Skip to content

Commit 6a45fce

Browse files
authored
[DebugInfo] Soft-disable the production of debug intrinsics (#133933)
This patch switches the --experimental-debuginfo-iterators flag to be stored to an otherwise unused cl-opt. This is a deliberate attempt to break downstream tests that are relying on the use of debug intrinsics, because they're imminently going away! If this commit breaks your tests, please just revert the commit upstream, and then make contact with us here: https://discourse.llvm.org/t/psa-ir-output-changing-from-debug-intrinsics-to-debug-records/79578 So that we can work out whether there's any further transition work needed to support the move away from using debug intrinsics.
1 parent 785d69e commit 6a45fce

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

flang/test/Integration/debug-local-var-2.f90

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
! RUN: %flang_fc1 -emit-llvm -debug-info-kind=standalone %s -mllvm --experimental-debuginfo-iterators=false -o - | FileCheck %s --check-prefixes=BOTH,INTRINSICS
21
! RUN: %flang_fc1 -emit-llvm -debug-info-kind=standalone %s -mllvm --experimental-debuginfo-iterators=true -o - | FileCheck %s --check-prefixes=BOTH,RECORDS
32
! RUN: %flang_fc1 -emit-llvm -debug-info-kind=line-tables-only %s -mllvm --experimental-debuginfo-iterators=false -o - | FileCheck --check-prefix=LINEONLY %s
43
! RUN: %flang_fc1 -emit-llvm -debug-info-kind=line-tables-only %s -mllvm --experimental-debuginfo-iterators=true -o - | FileCheck --check-prefix=LINEONLY %s
@@ -12,12 +11,6 @@
1211
! BOTH-DAG: %[[AL13:.*]] = alloca i8
1312
! BOTH-DAG: %[[AL12:.*]] = alloca i64
1413
! BOTH-DAG: %[[AL11:.*]] = alloca i32
15-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL11]], metadata ![[I4:.*]], metadata !DIExpression())
16-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL12]], metadata ![[I8:.*]], metadata !DIExpression())
17-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL13]], metadata ![[L1:.*]], metadata !DIExpression())
18-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL14]], metadata ![[L4:.*]], metadata !DIExpression())
19-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL15]], metadata ![[R4:.*]], metadata !DIExpression())
20-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL16]], metadata ![[R8:.*]], metadata !DIExpression())
2114
! RECORDS-DAG: #dbg_declare(ptr %[[AL11]], ![[I4:.*]], !DIExpression(), !{{.*}})
2215
! RECORDS-DAG: #dbg_declare(ptr %[[AL12]], ![[I8:.*]], !DIExpression(), !{{.*}})
2316
! RECORDS-DAG: #dbg_declare(ptr %[[AL13]], ![[L1:.*]], !DIExpression(), !{{.*}})
@@ -28,27 +21,19 @@
2821

2922
! BOTH-LABEL: define {{.*}}i64 @_QFPfn1
3023
! BOTH-SAME: (ptr captures(none) %[[ARG1:.*]], ptr captures(none) %[[ARG2:.*]], ptr captures(none) %[[ARG3:.*]])
31-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[ARG1]], metadata ![[A1:.*]], metadata !DIExpression())
32-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[ARG2]], metadata ![[B1:.*]], metadata !DIExpression())
33-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[ARG3]], metadata ![[C1:.*]], metadata !DIExpression())
3424
! RECORDS-DAG: #dbg_declare(ptr %[[ARG1]], ![[A1:.*]], !DIExpression(), !{{.*}})
3525
! RECORDS-DAG: #dbg_declare(ptr %[[ARG2]], ![[B1:.*]], !DIExpression(), !{{.*}})
3626
! RECORDS-DAG: #dbg_declare(ptr %[[ARG3]], ![[C1:.*]], !DIExpression(), !{{.*}})
3727
! BOTH-DAG: %[[AL2:.*]] = alloca i64
38-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL2]], metadata ![[RES1:.*]], metadata !DIExpression())
3928
! RECORDS-DAG: #dbg_declare(ptr %[[AL2]], ![[RES1:.*]], !DIExpression(), !{{.*}})
4029
! BOTH-LABEL: }
4130

4231
! BOTH-LABEL: define {{.*}}i32 @_QFPfn2
4332
! BOTH-SAME: (ptr captures(none) %[[FN2ARG1:.*]], ptr captures(none) %[[FN2ARG2:.*]], ptr captures(none) %[[FN2ARG3:.*]])
44-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[FN2ARG1]], metadata ![[A2:.*]], metadata !DIExpression())
45-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[FN2ARG2]], metadata ![[B2:.*]], metadata !DIExpression())
46-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[FN2ARG3]], metadata ![[C2:.*]], metadata !DIExpression())
4733
! RECORDS-DAG: #dbg_declare(ptr %[[FN2ARG1]], ![[A2:.*]], !DIExpression(), !{{.*}})
4834
! RECORDS-DAG: #dbg_declare(ptr %[[FN2ARG2]], ![[B2:.*]], !DIExpression(), !{{.*}})
4935
! RECORDS-DAG: #dbg_declare(ptr %[[FN2ARG3]], ![[C2:.*]], !DIExpression(), !{{.*}})
5036
! BOTH-DAG: %[[AL3:.*]] = alloca i32
51-
! INTRINSICS-DAG: call void @llvm.dbg.declare(metadata ptr %[[AL3]], metadata ![[RES2:.*]], metadata !DIExpression())
5237
! RECORDS-DAG: #dbg_declare(ptr %[[AL3]], ![[RES2:.*]], !DIExpression(), !{{.*}})
5338
! BOTH-LABEL: }
5439

llvm/lib/IR/BasicBlock.cpp

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,28 @@ using namespace llvm;
3030
#define DEBUG_TYPE "ir"
3131
STATISTIC(NumInstrRenumberings, "Number of renumberings across all blocks");
3232

33+
// This cl-opt exists to control whether variable-location information is
34+
// produced using intrinsics, or whether DbgRecords are produced. However,
35+
// it's imminently being phased out, so give it a flag-name that is very
36+
// unlikely to be used anywhere.
37+
//
38+
// If you find yourself needing to use this flag for any period longer than
39+
// five minutes, please revert the patch making this change, and make contact
40+
// in this discourse post, where we can discuss any further transition work
41+
// that might be needed to remove debug intrinsics.
42+
//
43+
// https://discourse.llvm.org/t/psa-ir-output-changing-from-debug-intrinsics-to-debug-records/79578
3344
cl::opt<bool> UseNewDbgInfoFormat(
34-
"experimental-debuginfo-iterators",
35-
cl::desc("Enable communicating debuginfo positions through iterators, "
36-
"eliminating intrinsics. Has no effect if "
37-
"--preserve-input-debuginfo-format=true."),
45+
"dont-pass-this-flag-please-experimental-debuginfo", cl::Hidden,
46+
cl::init(true));
47+
48+
// This cl-opt collects the --experimental-debuginfo-iterators flag and then
49+
// does nothing with it (because the it gets stored into an otherwise unused
50+
// cl-opt), so that we can disable debug-intrinsic production without
51+
// immediately modifying lots of tests. If your tests break because of this
52+
// change, please see the next comment up.
53+
static cl::opt<bool> DeliberatelyUnseenDbgInfoFlag(
54+
"experimental-debuginfo-iterators", cl::Hidden,
3855
cl::init(true));
3956

4057
DbgMarker *BasicBlock::createMarker(Instruction *I) {

0 commit comments

Comments
 (0)