[PATCH] D53765: [RFC prototype] Implementation of asm-goto support in LLVM

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 11 11:42:03 PST 2019


craig.topper updated this revision to Diff 181338.
craig.topper added a comment.

Attempt to fix a bug reported by @nickdesaulniers . We weren't using the label created for the blockaddress of the basic block when we printed the inline assembly block. So there was no guarantee the label we were using wouldn't be removed. To fix this I've kept the blockaddress object in the SelectionDAG instead of stripping it in the builder. I've created it directly as TargetBlockAddress to hide it from isel. Then in the printer I look for the operand being a blockaddress and grab the symbol for it. I had to make a few checks for TargetBlockAddress in other places to make this work. I admit I have no idea if this is the right thing to do at all, and open to any input on this.


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

https://reviews.llvm.org/D53765

Files:
  include/llvm-c/Core.h
  include/llvm/Analysis/SparsePropagation.h
  include/llvm/Bitcode/LLVMBitCodes.h
  include/llvm/CodeGen/GlobalISel/IRTranslator.h
  include/llvm/IR/CallSite.h
  include/llvm/IR/IRBuilder.h
  include/llvm/IR/InstVisitor.h
  include/llvm/IR/InstrTypes.h
  include/llvm/IR/Instruction.def
  include/llvm/IR/Instructions.h
  lib/AsmParser/LLLexer.cpp
  lib/AsmParser/LLParser.cpp
  lib/AsmParser/LLParser.h
  lib/AsmParser/LLToken.h
  lib/Bitcode/Reader/BitcodeReader.cpp
  lib/Bitcode/Writer/BitcodeWriter.cpp
  lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
  lib/CodeGen/CodeGenPrepare.cpp
  lib/CodeGen/GlobalISel/IRTranslator.cpp
  lib/CodeGen/IndirectBrExpandPass.cpp
  lib/CodeGen/MachineBasicBlock.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
  lib/CodeGen/SelectionDAG/TargetLowering.cpp
  lib/CodeGen/TargetLoweringBase.cpp
  lib/IR/AsmWriter.cpp
  lib/IR/Instruction.cpp
  lib/IR/Instructions.cpp
  lib/IR/Value.cpp
  lib/IR/Verifier.cpp
  lib/Target/X86/X86InstrInfo.cpp
  lib/Transforms/InstCombine/InstCombineCalls.cpp
  lib/Transforms/InstCombine/InstCombineInternal.h
  lib/Transforms/InstCombine/InstructionCombining.cpp
  lib/Transforms/Scalar/JumpThreading.cpp
  lib/Transforms/Scalar/SCCP.cpp
  lib/Transforms/Utils/BasicBlockUtils.cpp
  lib/Transforms/Utils/InlineFunction.cpp
  lib/Transforms/Utils/Local.cpp
  lib/Transforms/Utils/LoopSimplify.cpp
  lib/Transforms/Utils/LoopUtils.cpp
  lib/Transforms/Utils/SimplifyCFG.cpp
  test/Bitcode/callbr.ll
  test/Bitcode/callbr.ll.bc
  test/CodeGen/X86/callbr-asm-destinations.ll
  test/CodeGen/X86/callbr-asm-errors.ll
  test/CodeGen/X86/callbr-asm-outputs.ll
  test/CodeGen/X86/callbr-asm.ll
  test/Transforms/MergeFunc/call-and-invoke-with-ranges.ll
  test/Transforms/MergeFunc/inline-asm.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53765.181338.patch
Type: text/x-patch
Size: 100615 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190111/48b5940c/attachment.bin>


More information about the llvm-commits mailing list