llvm-project/llvm/lib/Target/XCore
Chandler Carruth 66654b72c9 [SDAG] Remove the reliance on MI's allocation strategy for
`MachineMemOperand` pointers attached to `MachineSDNodes` and instead
have the `SelectionDAG` fully manage the memory for this array.

Prior to this change, the memory management was deeply confusing here --
The way the MI was built relied on the `SelectionDAG` allocating memory
for these arrays of pointers using the `MachineFunction`'s allocator so
that the raw pointer to the array could be blindly copied into an
eventual `MachineInstr`. This creates a hard coupling between how
`MachineInstr`s allocate their array of `MachineMemOperand` pointers and
how the `MachineSDNode` does.

This change is motivated in large part by a change I am making to how
`MachineFunction` allocates these pointers, but it seems like a layering
improvement as well.

This would run the risk of increasing allocations overall, but I've
implemented an optimization that should avoid that by storing a single
`MachineMemOperand` pointer directly instead of allocating anything.
This is expected to be a net win because the vast majority of uses of
these only need a single pointer.

As a side-effect, this makes the API for updating a `MachineSDNode` and
a `MachineInstr` reasonably different which seems nice to avoid
unexpected coupling of these two layers. We can map between them, but we
shouldn't be *surprised* at where that occurs. =]

Differential Revision: https://reviews.llvm.org/D50680

llvm-svn: 339740
2018-08-14 23:30:32 +00:00
..
Disassembler Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
InstPrinter Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
MCTargetDesc
TargetInfo Add backend name to Target to enable runtime info to be fed back into TableGen 2017-11-15 23:55:44 +00:00
CMakeLists.txt Consistently sort add_subdirectory calls in lib/Target/*/CMakeLists.txt 2018-04-23 12:49:34 +00:00
LLVMBuild.txt
README.txt
XCore.h
XCore.td
XCoreAsmPrinter.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
XCoreCallingConv.td
XCoreFrameLowering.cpp [DebugInfo] Examine all uses of isDebugValue() for debug instructions. 2018-05-09 02:42:00 +00:00
XCoreFrameLowering.h
XCoreFrameToArgsOffsetElim.cpp
XCoreISelDAGToDAG.cpp [SDAG] Remove the reliance on MI's allocation strategy for 2018-08-14 23:30:32 +00:00
XCoreISelLowering.cpp Set ADDE/ADDC/SUBE/SUBC to expand by default 2018-06-01 13:21:33 +00:00
XCoreISelLowering.h Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00
XCoreInstrFormats.td
XCoreInstrInfo.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
XCoreInstrInfo.h
XCoreInstrInfo.td
XCoreLowerThreadLocal.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
XCoreMCInstLower.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
XCoreMCInstLower.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
XCoreMachineFunctionInfo.cpp MachineFunction: Return reference from getFunction(); NFC 2017-12-15 22:22:58 +00:00
XCoreMachineFunctionInfo.h Remove trailing space 2018-07-30 19:41:25 +00:00
XCoreRegisterInfo.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
XCoreRegisterInfo.h Remove trailing space 2018-07-30 19:41:25 +00:00
XCoreRegisterInfo.td
XCoreSelectionDAGInfo.cpp
XCoreSelectionDAGInfo.h
XCoreSubtarget.cpp
XCoreSubtarget.h Remove trailing space 2018-07-30 19:41:25 +00:00
XCoreTargetMachine.cpp (Re-landing) Expose a TargetMachine::getTargetTransformInfo function 2017-12-22 18:21:59 +00:00
XCoreTargetMachine.h (Re-landing) Expose a TargetMachine::getTargetTransformInfo function 2017-12-22 18:21:59 +00:00
XCoreTargetObjectFile.cpp
XCoreTargetObjectFile.h
XCoreTargetStreamer.h
XCoreTargetTransformInfo.h Fix a bunch more layering of CodeGen headers that are in Target 2017-11-17 01:07:10 +00:00

README.txt

To-do
-----

* Instruction encodings
* Tailcalls
* Investigate loop alignment
* Add builtins