<div dir="ltr"><div>We're seeing a segfault when compiling compiler-rt builtins that seems to have been introduced by this change:</div><div><br></div><div>Stack dump:<br>0.      Program arguments: ./bin/clang -cc1 -triple aarch64-unknown-fuchsia -emit-obj --mrelax-relocations -disable-free -main-file-name multc3.c -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu generic -target-feature +neon -target-abi aapcs -fallow-half-arguments-and-returns -fno-split-dwarf-inlining -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -sys-header-deps -D VISIBILITY_HIDDEN -D NDEBUG -O2 -std=c11 -ferror-limit 19 -fvisibility hidden -fsanitize=shadow-call-stack -stack-protector 2 -fno-builtin -fno-signed-char -fgnuc-version=4.2.1 -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -x c multc3-9f994f.c<br>1.      <eof> parser at end of file<br>2.      Per-module optimization passes<br>3.      Running pass 'Function Pass Manager' on module 'multc3-9f994f.c'.<br>4.      Running pass 'Simplify the CFG' on function '@__multc3'<br> #0 0x0000000008875f7a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /src/clang-llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:563:11<br> #1 0x000000000887608b PrintStackTraceSignalHandler(void*) /src/clang-llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:630:1<br> #2 0x000000000887485b llvm::sys::RunSignalHandlers() /src/clang-llvm/llvm-project/llvm/lib/Support/Signals.cpp:70:5<br> #3 0x00000000088766e3 SignalHandler(int) /src/clang-llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:405:1<br> #4 0x00007f202e2eb140 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14140)<br> #5 0x00000000057d5c3c llvm::BasicBlock::getParent() const /src/clang-llvm/llvm-project/llvm/include/llvm/IR/BasicBlock.h:107:46<br> #6 0x0000000007c9e06d llvm::Instruction::getFunction() const /src/clang-llvm/llvm-project/llvm/lib/IR/Instruction.cpp:73:3<br> #7 0x0000000005737bf5 llvm::Instruction::getFunction() /src/clang-llvm/llvm-project/llvm/include/llvm/IR/Instruction.h:114:5<br> #8 0x0000000007bc9ead llvm::Instruction::dropLocation() /src/clang-llvm/llvm-project/llvm/lib/IR/DebugInfo.cpp:715:43<br> #9 0x00000000089b7bd7 llvm::FoldBranchToCommonDest(llvm::BranchInst*, llvm::MemorySSAUpdater*, llvm::TargetTransformInfo const*, unsigned int) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:2883:24<br>#10 0x00000000089bf2e0 (anonymous namespace)::SimplifyCFGOpt::simplifyCondBranch(llvm::BranchInst*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6103:7<br>#11 0x00000000089bb03c (anonymous namespace)::SimplifyCFGOpt::simplifyBranch(llvm::BranchInst*, llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>&) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:5992:38<br>#12 0x00000000089b9953 (anonymous namespace)::SimplifyCFGOpt::simplifyOnce(llvm::BasicBlock*) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6285:16<br>#13 0x00000000089b9500 (anonymous namespace)::SimplifyCFGOpt::run(llvm::BasicBlock*) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6319:16<br>#14 0x00000000089b9476 llvm::simplifyCFG(llvm::BasicBlock*, llvm::TargetTransformInfo const&, llvm::SimplifyCFGOptions const&, llvm::SmallPtrSetImpl<llvm::BasicBlock*>*) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Utils/SimplifyCFG.cpp:6328:3<br>#15 0x0000000008729bb6 iterativelySimplifyCFG(llvm::Function&, llvm::TargetTransformInfo const&, llvm::SimplifyCFGOptions const&) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp:184:11<br>#16 0x00000000087291af simplifyFunctionCFG(llvm::Function&, llvm::TargetTransformInfo const&, llvm::SimplifyCFGOptions const&) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp:198:18<br>#17 0x0000000008729eed (anonymous namespace)::CFGSimplifyPass::runOnFunction(llvm::Function&) /src/clang-llvm/llvm-project/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp:285:5<br>#18 0x0000000007cf4aa2 llvm::FPPassManager::runOnFunction(llvm::Function&) /src/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1519:23<br>#19 0x0000000007cf9c65 llvm::FPPassManager::runOnModule(llvm::Module&) /src/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1565:16<br>#20 0x0000000007cf5446 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /src/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1634:23<br>#21 0x0000000007cf4f76 llvm::legacy::PassManagerImpl::run(llvm::Module&) /src/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:615:16<br>#22 0x0000000007cf9f61 llvm::legacy::PassManager::run(llvm::Module&) /src/clang-llvm/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1761:3<br>#23 0x0000000008c4fe2d (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream> >) /src/clang-llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:982:3<br>#24 0x0000000008c4c5b0 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::__2::unique_ptr<llvm::raw_pwrite_stream, std::__2::default_delete<llvm::raw_pwrite_stream> >) /src/clang-llvm/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1650:17<br>#25 0x00000000098e8ee4 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /src/clang-llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:345:7<br>#26 0x000000000bff6648 clang::ParseAST(clang::Sema&, bool, bool) /src/clang-llvm/llvm-project/clang/lib/Parse/ParseAST.cpp:178:12<br>#27 0x000000000971c0dd clang::ASTFrontendAction::ExecuteAction() /src/clang-llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1059:1<br>#28 0x00000000098e5290 clang::CodeGenAction::ExecuteAction() /src/clang-llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1189:1<br>#29 0x000000000971bad8 clang::FrontendAction::Execute() /src/clang-llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:954:7<br>#30 0x000000000964886b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /src/clang-llvm/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:984:23<br>#31 0x00000000098d62b4 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /src/clang-llvm/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:278:8<br>#32 0x0000000005666835 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /src/clang-llvm/llvm-project/clang/tools/driver/cc1_main.cpp:240:13<br>#33 0x000000000565971a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /src/clang-llvm/llvm-project/clang/tools/driver/driver.cpp:330:5<br>#34 0x00000000056588dd main /src/clang-llvm/llvm-project/clang/tools/driver/driver.cpp:407:5<br>#35 0x00007f202df95cca __libc_start_main ./csu/../csu/libc-start.c:308:16<br>#36 0x000000000565807a _start (./bin/clang+0x565807a)<br></div><div><br></div><div>Would it be possible to revert it?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Sep 29, 2020 at 5:39 PM Vedant Kumar via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Vedant Kumar<br>
Date: 2020-09-29T17:39:07-07:00<br>
New Revision: 674f57870f4c8a7fd7b629bffc85b149cbefd3e0<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/674f57870f4c8a7fd7b629bffc85b149cbefd3e0" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/674f57870f4c8a7fd7b629bffc85b149cbefd3e0</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/674f57870f4c8a7fd7b629bffc85b149cbefd3e0.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/674f57870f4c8a7fd7b629bffc85b149cbefd3e0.diff</a><br>
<br>
LOG: [gardening] Replace some uses of setDebugLoc(DebugLoc()) with dropLocation(), NFC<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    llvm/lib/Transforms/Scalar/LICM.cpp<br>
    llvm/lib/Transforms/Utils/SimplifyCFG.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp<br>
index 631fa2f27c5b..bc581e7ad40f 100644<br>
--- a/llvm/lib/Transforms/Scalar/LICM.cpp<br>
+++ b/llvm/lib/Transforms/Scalar/LICM.cpp<br>
@@ -2159,7 +2159,7 @@ bool llvm::promoteLoopAccessesToScalars(<br>
   if (SawUnorderedAtomic)<br>
     PreheaderLoad->setOrdering(AtomicOrdering::Unordered);<br>
   PreheaderLoad->setAlignment(Alignment);<br>
-  PreheaderLoad->setDebugLoc(DebugLoc());<br>
+  PreheaderLoad->dropLocation();<br>
   if (AATags)<br>
     PreheaderLoad->setAAMetadata(AATags);<br>
   SSA.AddAvailableValue(Preheader, PreheaderLoad);<br>
<br>
diff  --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp<br>
index 124a7c423e72..1672293380d7 100644<br>
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp<br>
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp<br>
@@ -2218,7 +2218,7 @@ bool SimplifyCFGOpt::SpeculativelyExecuteBB(BranchInst *BI, BasicBlock *ThenBB,<br>
   // be misleading while debugging.<br>
   for (auto &I : *ThenBB) {<br>
     if (!SpeculatedStoreValue || &I != SpeculatedStore)<br>
-      I.setDebugLoc(DebugLoc());<br>
+      I.dropLocation();<br>
     I.dropUnknownNonDebugMetadata();<br>
   }<br>
<br>
@@ -2878,7 +2878,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,<br>
       // When we fold the bonus instructions we want to make sure we<br>
       // reset their debug locations in order to avoid stepping on dead<br>
       // code caused by folding dead branches.<br>
-      NewBonusInst->setDebugLoc(DebugLoc());<br>
+      NewBonusInst->dropLocation();<br>
<br>
       RemapInstruction(NewBonusInst, VMap,<br>
                        RF_NoModuleLevelChanges | RF_IgnoreMissingLocals);<br>
@@ -2902,7 +2902,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,<br>
<br>
     // Reset the condition debug location to avoid jumping on dead code<br>
     // as the result of folding dead branches.<br>
-    CondInPred->setDebugLoc(DebugLoc());<br>
+    CondInPred->dropLocation();<br>
<br>
     RemapInstruction(CondInPred, VMap,<br>
                      RF_NoModuleLevelChanges | RF_IgnoreMissingLocals);<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div>