[PATCH] D91722: [DebugInfo] Use variadic debug values to salvage BinOps and GEP instrs with non-const operands

Jordan Rupprecht via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 26 17:21:13 PDT 2021


rupprecht added a comment.

Here's a C++ repro

  $ cat repro.cc
  class h {
   public:
    h(const char *);
    ~h();
  };
  
  int j(h);
  int k();
  
  int func() {
    int l = k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    l += k();
    j("");
    return l;
  }
  
  $ clang++ -g -O1 -c repro.cc
  clang++: /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:128: (anonymous namespace)::DbgVariableValue::DbgVariableValue(ArrayRef<unsigned int>, bool, bool, const llvm::DIExpression &): Assertion `LocNoVec.size() < 64 && "debug value containing 64+ unique machine locations is not " "supported by Live Debug Variables"' failed.
  PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.      Program arguments: /home/rupprecht/dev/clang++ -g -O1 -c repro.cc
  1.      <eof> parser at end of file
  2.      Code generation
  3.      Running pass 'Function Pass Manager' on module 'repro.cc'.
  4.      Running pass 'Debug Variable Analysis' on function '@_Z4funcv'
  ...
  #12 0x0000000008508a60 (anonymous namespace)::DbgVariableValue::DbgVariableValue(llvm::ArrayRef<unsigned int>, bool, bool, llvm::DIExpression const&) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:129:18
  #13 0x0000000008505fff (anonymous namespace)::UserValue::addDef(llvm::SlotIndex, llvm::ArrayRef<llvm::MachineOperand>, bool, bool, llvm::DIExpression const&) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:403:22
  #14 0x0000000008505976 (anonymous namespace)::LDVImpl::handleDebugValue(llvm::MachineInstr&, llvm::SlotIndex) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:814:5
  #15 0x00000000085050d8 (anonymous namespace)::LDVImpl::collectDebugValues(llvm::MachineFunction&) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:887:68
  #16 0x0000000008503983 (anonymous namespace)::LDVImpl::runOnMachineFunction(llvm::MachineFunction&) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:1208:18
  #17 0x00000000085036f8 llvm::LiveDebugVariables::runOnMachineFunction(llvm::MachineFunction&) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/LiveDebugVariables.cpp:1236:3
  #18 0x00000000081aced7 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:72:8
  #19 0x0000000008824f9e llvm::FPPassManager::runOnFunction(llvm::Function&) /home/rupprecht/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1439:23
  #20 0x0000000008829cf2 llvm::FPPassManager::runOnModule(llvm::Module&) /home/rupprecht/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1485:16
  #21 0x0000000008825889 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/rupprecht/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1554:23
  ...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D91722/new/

https://reviews.llvm.org/D91722



More information about the llvm-commits mailing list