Skip to content

[PGOInstrUse] "dereferencing end() iterator" on unreachable block #135828

@aeubanks

Description

@aeubanks
diff --git a/llvm/test/Transforms/PGOProfile/Inputs/musttail_pgo-instr-use.proftext b/llvm/test/Transforms/PGOProfile/Inputs/musttail_pgo-instr-use.proftext
new file mode 100644
index 000000000000..9be174fb32bc
--- /dev/null
+++ b/llvm/test/Transforms/PGOProfile/Inputs/musttail_pgo-instr-use.proftext
@@ -0,0 +1,9 @@
+# IR level Instrumentation Flag
+:ir
+foo
+# Func Hash:
+742261418966908927
+# Num Counters:
+1
+# Counter Values:
+1
diff --git a/llvm/test/Transforms/PGOProfile/musttail_pgo-instr-use.ll b/llvm/test/Transforms/PGOProfile/musttail_pgo-instr-use.ll
new file mode 100644
index 000000000000..1d1aa8747971
--- /dev/null
+++ b/llvm/test/Transforms/PGOProfile/musttail_pgo-instr-use.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-profdata merge %S/Inputs/musttail_pgo-instr-use.proftext -o %t.profdata
+; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -S
+
+declare ptr @bar()
+
+define ptr @foo() {
+entry:
+  ret ptr null
+
+2:
+  ret ptr null
+}

we get an error:

clang++: ../../llvm/include/llvm/ADT/DenseMap.h:1245: pointer llvm::DenseMapIterator<const llvm::BasicBlock *, std::unique_ptr<(anonymous namespace)::PGOUseBBInfo>, llvm::DenseMapInfo<const llvm::BasicBlock *>, llvm::detail::DenseMapPair<const llvm::BasicBlock *, std::unique_ptr<(anonymous namespace)::PGOUseBBInfo>>, true>::operator->() const [KeyT = const llvm::BasicBlock *, V
alueT = std::unique_ptr<(anonymous namespace)::PGOUseBBInfo>, KeyInfoT = llvm::DenseMapInfo<const llvm::BasicBlock *>, Bucket = llvm::detail::DenseMapPair<const llvm::BasicBlock *, std::uniq
ue_ptr<(anonymous namespace)::PGOUseBBInfo>>, IsConst = true]: Assertion `Ptr != End && "dereferencing end() iterator"' failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    PGOProfile Guided OptimizationscrashPrefer [crash-on-valid] or [crash-on-invalid]

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions