This intrinsic represents a label with a list of associated metadata
strings. It is not zero-cost, since it is modelled as reading and
writing memory.
MSVC does not clone annotations when inlining, so we follow suit.
Paths
| Differential D36904
Add llvm.codeview.annotation to implement MSVC __annotation ClosedPublic Authored by rnk on Aug 18 2017, 3:43 PM.
Details Summary This intrinsic represents a label with a list of associated metadata MSVC does not clone annotations when inlining, so we follow suit.
Diff Detail
Event Timelinernk retitled this revision from Add llvm.label.annotation to implement MSVC __annotation to Add llvm.codeview.annotation to implement MSVC __annotation.Aug 18 2017, 3:44 PM
Comment Actions
Oh, I forgot about that. In general, I was just aiming for something conservatively correct that would survive the optimizer at all costs. It should be code generated at most once (so noduplicate). In practice, MSVC removes annotations during inlining, and does not appear to duplicate them in any other way. We could try lambdas or other tricks that force them to double-emit them, though. This revision is now accepted and ready to land.Aug 29 2017, 4:10 PM Closed by commit rL312569: Add llvm.codeview.annotation to implement MSVC __annotation (authored by rnk). · Explain WhySep 5 2017, 1:16 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 113904 llvm/trunk/docs/LangRef.rst
llvm/trunk/include/llvm/CodeGen/ISDOpcodes.h
llvm/trunk/include/llvm/CodeGen/MachineFunction.h
llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h
llvm/trunk/include/llvm/DebugInfo/CodeView/SymbolRecord.h
llvm/trunk/include/llvm/IR/Intrinsics.td
llvm/trunk/include/llvm/Target/Target.td
llvm/trunk/include/llvm/Target/TargetOpcodes.def
llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.h
llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
llvm/trunk/lib/CodeGen/MachineFunction.cpp
llvm/trunk/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
llvm/trunk/test/CodeGen/X86/label-annotation.ll
llvm/trunk/test/Transforms/Inline/label-annotation.ll
|