[llvm] Propagate DebugLocs on phis in BreakCriticalEdges (PR #133492)
via llvm-commits
llvm-commits at lists.llvm.org
Thu May 8 04:54:13 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {undef deprecator}-->
:warning: undef deprecator found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git diff -U0 --pickaxe-regex -S '([^a-zA-Z0-9#_-]undef[^a-zA-Z0-9_-]|UndefValue::get)' 'HEAD~1' HEAD clang/lib/CIR/Dialect/Transforms/CIRSimplify.cpp clang/test/Analysis/issue-137252.cpp clang/test/CIR/CodeGen/nonzeroinit-struct.cpp clang/test/CIR/CodeGen/union.cpp clang/test/Driver/mips-cpus.c clang/test/SemaCXX/gh138775.cpp lldb/test/API/lang/cpp/type_lookup_anon_struct/main.cpp llvm/test/Analysis/LoopAccessAnalysis/different_strides.ll llvm/test/CodeGen/NVPTX/NVPTXAA_before_BasicAA.ll llvm/test/CodeGen/SPIRV/spirv-explicit-layout.ll llvm/test/CodeGen/X86/asm-modifier-pic.ll llvm/test/CodeGen/X86/codegen-no-uselist-constantdata.ll llvm/test/Transforms/CodeGenPrepare/X86/split-dbg.ll llvm/test/Transforms/CorrelatedValuePropagation/no-uselist-constantdata-regression.ll llvm/test/Transforms/InstCombine/fold-phi-arg-gep-to-phi-negative.ll llvm/test/Transforms/InstCombine/or-or-combine.ll llvm/test/tools/llvm-diff/uselistorder-issue58629-gv.ll clang-tools-extra/clang-doc/Representation.h clang-tools-extra/clang-tidy/cppcoreguidelines/MissingStdForwardCheck.cpp clang/include/clang/APINotes/Types.h clang/include/clang/AST/DeclCXX.h clang/include/clang/AST/DeclOpenACC.h clang/include/clang/AST/ExprCXX.h clang/include/clang/AST/OpenACCClause.h clang/include/clang/AST/StmtOpenACC.h clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/CIR/CIRToCIRPasses.h clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h clang/include/clang/CIR/Dialect/Passes.h clang/include/clang/CIR/MissingFeatures.h clang/include/clang/Driver/SanitizerArgs.h clang/include/clang/Format/Format.h clang/include/clang/Sema/ParsedTemplate.h clang/include/clang/Serialization/ModuleCache.h clang/include/clang/Tooling/DependencyScanning/DependencyScanningService.h clang/include/clang/Tooling/DependencyScanning/InProcessModuleCache.h clang/lib/APINotes/APINotesFormat.h clang/lib/APINotes/APINotesReader.cpp clang/lib/APINotes/APINotesWriter.cpp clang/lib/APINotes/APINotesYAMLCompiler.cpp clang/lib/AST/ByteCode/Compiler.cpp clang/lib/AST/Decl.cpp clang/lib/AST/DeclObjC.cpp clang/lib/AST/DeclTemplate.cpp clang/lib/AST/Expr.cpp clang/lib/AST/ExprCXX.cpp clang/lib/AST/ExprConstant.cpp clang/lib/AST/OpenACCClause.cpp clang/lib/AST/StmtOpenACC.cpp clang/lib/AST/Type.cpp clang/lib/Basic/Targets/X86.h clang/lib/CIR/CodeGen/CIRGenExpr.cpp clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp clang/lib/CIR/CodeGen/CIRGenFunction.h clang/lib/CIR/CodeGen/CIRGenOpenACCClause.h clang/lib/CIR/CodeGen/CIRGenRecordLayout.h clang/lib/CIR/CodeGen/CIRGenRecordLayoutBuilder.cpp clang/lib/CIR/CodeGen/CIRGenStmt.cpp clang/lib/CIR/CodeGen/CIRGenTypes.cpp clang/lib/CIR/CodeGen/CIRGenTypes.h clang/lib/CIR/Dialect/IR/CIRDialect.cpp clang/lib/CIR/Dialect/Transforms/CIRCanonicalize.cpp clang/lib/CIR/FrontendAction/CIRGenAction.cpp clang/lib/CIR/Lowering/CIRPasses.cpp clang/lib/CodeGen/CGCall.cpp clang/lib/CodeGen/CGDecl.cpp clang/lib/CodeGen/CGExpr.cpp clang/lib/CodeGen/CGPointerAuth.cpp clang/lib/CodeGen/CodeGenFunction.h clang/lib/Driver/SanitizerArgs.cpp clang/lib/Driver/ToolChains/Arch/Mips.cpp clang/lib/Driver/ToolChains/CommonArgs.cpp clang/lib/Format/Format.cpp clang/lib/Format/FormatToken.h clang/lib/Format/TokenAnnotator.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/lib/Headers/gpuintrin.h clang/lib/Parse/ParseExprCXX.cpp clang/lib/Sema/SemaAPINotes.cpp clang/lib/Sema/SemaChecking.cpp clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaDeclAttr.cpp clang/lib/Sema/SemaExpr.cpp clang/lib/Sema/SemaTemplate.cpp clang/lib/Serialization/ASTCommon.cpp clang/lib/Serialization/ASTCommon.h clang/lib/Serialization/ASTReader.cpp clang/lib/Serialization/ASTWriter.cpp clang/lib/Serialization/ModuleCache.cpp clang/lib/Serialization/ModuleManager.cpp clang/lib/StaticAnalyzer/Checkers/WebKit/RawPtrRefLambdaCapturesChecker.cpp clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp clang/lib/Tooling/DependencyScanning/DependencyScanningService.cpp clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp clang/lib/Tooling/DependencyScanning/InProcessModuleCache.cpp clang/test/APINotes/Inputs/Headers/SwiftImportAs.h clang/test/APINotes/swift-import-as.cpp clang/test/Analysis/Checkers/WebKit/uncounted-lambda-captures.cpp clang/test/C/C2y/n3369.c clang/test/CIR/CodeGen/struct.cpp clang/test/CIR/CodeGen/switch.cpp clang/test/CIR/CodeGenOpenACC/loop.cpp clang/test/CXX/drs/cwg1xx.cpp clang/test/CXX/drs/cwg2xx.cpp clang/test/CXX/drs/cwg4xx.cpp clang/test/CXX/drs/cwg5xx.cpp clang/test/CXX/temp/temp.res/temp.dep/temp.dep.type/p1.cpp clang/test/CodeGen/bounds-checking-debuginfo.c clang/test/CodeGen/ms_abi.c clang/test/CodeGen/sysv_abi.c clang/test/CodeGenCXX/amdgcn-automatic-variable.cpp clang/test/Driver/fsanitize.c clang/test/Driver/mcmodel.c clang/test/FixIt/fixit.cpp clang/test/Sema/callingconv-ms_abi.c clang/test/Sema/varargs-win64.c clang/test/SemaCXX/MicrosoftCompatibility.cpp clang/test/SemaCXX/MicrosoftExtensions.cpp clang/test/SemaCXX/MicrosoftSuper.cpp clang/test/SemaCXX/concept-crash-on-diagnostic.cpp clang/test/SemaCXX/constant-expression-cxx11.cpp clang/test/SemaCXX/rounding-math-crash.cpp clang/test/SemaCXX/unknown-type-name.cpp clang/test/SemaTemplate/typename-specifier-3.cpp clang/tools/cir-opt/cir-opt.cpp clang/tools/libclang/CXIndexDataConsumer.cpp clang/unittests/Format/ConfigParseTest.cpp clang/unittests/Format/FormatTest.cpp clang/unittests/Format/TokenAnnotatorTest.cpp compiler-rt/lib/lsan/lsan_fuchsia.cpp flang/lib/Frontend/CompilerInvocation.cpp flang/lib/Lower/OpenMP/DataSharingProcessor.cpp flang/lib/Lower/OpenMP/OpenMP.cpp flang/lib/Semantics/check-call.cpp libc/test/src/math/exp10m1f_test.cpp libcxx/include/__expected/expected.h libcxx/include/__iterator/advance.h libcxx/include/__type_traits/is_core_convertible.h libcxx/test/libcxx/iterators/assert.advance.pass.cpp libcxx/test/libcxx/iterators/assert.next.pass.cpp libcxx/test/libcxx/iterators/assert.prev.pass.cpp libcxx/test/std/algorithms/ranges_robust_against_omitting_invoke.pass.cpp libcxx/test/std/input.output/file.streams/fstreams/filebuf.members/close.pass.cpp libcxx/test/std/library/description/conventions/customization.point.object/niebloid.compile.pass.cpp libcxx/test/std/utilities/expected/expected.expected/equality/equality.T2.pass.cpp libcxx/test/std/utilities/expected/expected.expected/equality/equality.other_expected.pass.cpp libcxx/test/std/utilities/expected/expected.expected/equality/equality.unexpected.pass.cpp libcxx/test/std/utilities/expected/expected.void/equality/equality.other_expected.pass.cpp libcxx/test/std/utilities/expected/expected.void/equality/equality.unexpected.pass.cpp libcxx/test/std/utilities/expected/types.h lld/test/wasm/lto/signature-mismatch.ll lld/wasm/LTO.cpp lld/wasm/LTO.h lld/wasm/SymbolTable.cpp lldb/source/Plugins/ObjectFile/Minidump/MinidumpFileBuilder.cpp lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp lldb/source/Utility/Checksum.cpp lldb/tools/lldb-dap/DAP.cpp lldb/tools/lldb-dap/DAP.h lldb/tools/lldb-dap/EventHelper.cpp lldb/tools/lldb-dap/Handler/AttachRequestHandler.cpp lldb/tools/lldb-dap/Handler/ConfigurationDoneRequestHandler.cpp lldb/tools/lldb-dap/Handler/InitializeRequestHandler.cpp lldb/tools/lldb-dap/Handler/LaunchRequestHandler.cpp lldb/tools/lldb-dap/Handler/RequestHandler.cpp lldb/tools/lldb-dap/Handler/RequestHandler.h llvm/include/llvm/ADT/APInt.h llvm/include/llvm/ADT/ArrayRef.h llvm/include/llvm/ADT/DenseMap.h llvm/include/llvm/ADT/STLExtras.h llvm/include/llvm/Analysis/AliasAnalysis.h llvm/include/llvm/Analysis/DXILResource.h llvm/include/llvm/Analysis/MemoryProfileInfo.h llvm/include/llvm/CodeGen/TargetLowering.h llvm/include/llvm/IR/Constants.h llvm/include/llvm/IR/Use.h llvm/include/llvm/IR/Value.h llvm/include/llvm/MC/MCParser/MCTargetAsmParser.h llvm/include/llvm/MC/MCPseudoProbe.h llvm/include/llvm/Target/TargetMachine.h llvm/include/llvm/Transforms/IPO/Attributor.h llvm/lib/Analysis/AliasAnalysis.cpp llvm/lib/Analysis/AssumeBundleQueries.cpp llvm/lib/Analysis/InstructionSimplify.cpp llvm/lib/Analysis/LoopAccessAnalysis.cpp llvm/lib/Analysis/MemoryProfileInfo.cpp llvm/lib/Analysis/ScalarEvolution.cpp llvm/lib/Analysis/TypeMetadataUtils.cpp llvm/lib/AsmParser/LLParser.cpp llvm/lib/Bitcode/Reader/BitcodeReader.cpp llvm/lib/Bitcode/Writer/ValueEnumerator.cpp llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp llvm/lib/CodeGen/CodeGenPrepare.cpp llvm/lib/CodeGen/ComplexDeinterleavingPass.cpp llvm/lib/CodeGen/InterleavedAccessPass.cpp llvm/lib/CodeGen/MIRParser/MIParser.cpp llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp llvm/lib/DebugInfo/MSF/MSFBuilder.cpp llvm/lib/ExecutionEngine/JITLink/ELF.cpp llvm/lib/ExecutionEngine/JITLink/JITLink.cpp llvm/lib/IR/AsmWriter.cpp llvm/lib/IR/AttributeImpl.h llvm/lib/IR/Instruction.cpp llvm/lib/IR/Use.cpp llvm/lib/IR/Value.cpp llvm/lib/MC/MCContext.cpp llvm/lib/MC/MCParser/AsmParser.cpp llvm/lib/MC/MCSymbol.cpp llvm/lib/ObjectYAML/MinidumpEmitter.cpp llvm/lib/Passes/PassBuilderPipelines.cpp llvm/lib/Support/FoldingSet.cpp llvm/lib/Support/Unix/Signals.inc llvm/lib/TableGen/Record.cpp llvm/lib/Target/AArch64/GISel/AArch64RegisterBankInfo.cpp llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp llvm/lib/Target/ARM/MCTargetDesc/ARMAddressingModes.h llvm/lib/Target/BPF/AsmParser/BPFAsmParser.cpp llvm/lib/Target/NVPTX/NVPTXAliasAnalysis.h llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp llvm/lib/Target/NVPTX/NVPTXTargetMachine.h llvm/lib/Target/RISCV/RISCVISelLowering.cpp llvm/lib/Target/RISCV/RISCVISelLowering.h llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.cpp llvm/lib/Target/SPIRV/SPIRVGlobalRegistry.h llvm/lib/Target/SPIRV/SPIRVIRMapping.h llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp llvm/lib/Target/SPIRV/SPIRVISelLowering.h llvm/lib/Target/XCore/XCoreISelLowering.cpp llvm/lib/Target/XCore/XCoreISelLowering.h llvm/lib/Target/XCore/XCoreSelectionDAGInfo.cpp llvm/lib/Target/XCore/XCoreSelectionDAGInfo.h llvm/lib/Transforms/IPO/Attributor.cpp llvm/lib/Transforms/IPO/LowerTypeTests.cpp llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp llvm/lib/Transforms/InstCombine/InstructionCombining.cpp llvm/lib/Transforms/Scalar/Reassociate.cpp llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp llvm/test/Analysis/LoopAccessAnalysis/different-strides-safe-dep-due-to-backedge-taken-count.ll llvm/test/Analysis/LoopAccessAnalysis/non-constant-strides-backward.ll llvm/test/Analysis/MemorySSA/nondeterminism.ll llvm/test/Analysis/UniformityAnalysis/AMDGPU/intrinsics.ll llvm/test/CodeGen/AMDGPU/frexp-constant-fold.ll llvm/test/CodeGen/Mips/msa/arithmetic.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-interleaved-access.ll llvm/test/CodeGen/RISCV/rvv/fixed-vectors-zvqdotq.ll llvm/test/CodeGen/RISCV/rvv/vp-vector-interleaved-access.ll llvm/test/CodeGen/SPIRV/hlsl-resources/StructuredBuffer.ll llvm/test/CodeGen/X86/asm-modifier-macho.ll llvm/test/CodeGen/X86/asm-modifier.ll llvm/test/DebugInfo/COFF/asm.ll llvm/test/Transforms/PGOProfile/memprof.ll llvm/test/tools/llvm-diff/uselistorder-issue58629.ll llvm/test/tools/llvm-reduce/bitcode-uselistorder.ll llvm/test/tools/llvm-reduce/uselistorder-invalid-ir-output.ll llvm/tools/verify-uselistorder/verify-uselistorder.cpp llvm/unittests/ADT/DenseMapTest.cpp llvm/unittests/ExecutionEngine/JITLink/StubsTests.cpp llvm/unittests/IR/ConstantsTest.cpp llvm/unittests/Support/TrailingObjectsTest.cpp llvm/utils/TableGen/Common/CodeGenTarget.h mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensor.h mlir/include/mlir/Support/StorageUniquer.h mlir/include/mlir/Transforms/DialectConversion.h mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp mlir/lib/Dialect/Affine/Analysis/NestedMatcher.cpp mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp mlir/lib/Dialect/Tosa/IR/TosaOps.cpp mlir/lib/IR/AffineMapDetail.h mlir/lib/IR/Location.cpp mlir/lib/IR/MLIRContext.cpp mlir/lib/IR/TypeDetail.h mlir/lib/Tools/PDLL/AST/Nodes.cpp mlir/lib/Transforms/Utils/DialectConversion.cpp polly/lib/Support/ScopHelper.cpp llvm/include/llvm/ExecutionEngine/JITLink/ELF_x86.h llvm/include/llvm/ExecutionEngine/JITLink/x86.h llvm/lib/ExecutionEngine/JITLink/ELF_x86.cpp llvm/lib/ExecutionEngine/JITLink/x86.cpp llvm/test/Transforms/InstCombine/frexp.ll
``````````
</details>
The following files introduce new uses of undef:
- llvm/test/CodeGen/RISCV/rvv/fixed-vectors-interleaved-access.ll
- llvm/test/Transforms/InstCombine/frexp.ll
[Undef](https://llvm.org/docs/LangRef.html#undefined-values) is now deprecated and should only be used in the rare cases where no replacement is possible. For example, a load of uninitialized memory yields `undef`. You should use `poison` values for placeholders instead.
In tests, avoid using `undef` and having tests that trigger undefined behavior. If you need an operand with some unimportant value, you can add a new argument to the function and use that instead.
For example, this is considered a bad practice:
```llvm
define void @fn() {
...
br i1 undef, ...
}
```
Please use the following instead:
```llvm
define void @fn(i1 %cond) {
...
br i1 %cond, ...
}
```
Please refer to the [Undefined Behavior Manual](https://llvm.org/docs/UndefinedBehavior.html) for more information.
https://github.com/llvm/llvm-project/pull/133492
More information about the llvm-commits
mailing list