llvm-6502/include/llvm/CodeGen
Chih-Hung Hsieh dc73dc09f1 Implement target independent TLS compatible with glibc's emutls.c.
The 'common' section TLS is not implemented.
Current C/C++ TLS variables are not placed in common section.
DWARF debug info to get the address of TLS variables is not generated yet.

clang and driver changes in http://reviews.llvm.org/D10524

  Added -femulated-tls flag to select the emulated TLS model,
  which will be used for old targets like Android that do not
  support ELF TLS models.

Added TargetLowering::LowerToTLSEmulatedModel as a target-independent
function to convert a SDNode of TLS variable address to a function call
to __emutls_get_address.

Added into lib/Target/*/*ISelLowering.cpp to call LowerToTLSEmulatedModel
for TLSModel::Emulated. Although all targets supporting ELF TLS models are
enhanced, emulated TLS model has been tested only for Android ELF targets.
Modified AsmPrinter.cpp to print the emutls_v.* and emutls_t.* variables for
emulated TLS variables.
Modified DwarfCompileUnit.cpp to skip some DIE for emulated TLS variabls.

TODO: Add proper DIE for emulated TLS variables.
      Added new unit tests with emulated TLS.

Differential Revision: http://reviews.llvm.org/D10522


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243438 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-28 16:24:05 +00:00
..
MIRParser MIR Serialization: Connect the machine function analysis pass to the MIR parser. 2015-06-15 20:30:22 +00:00
PBQP Add more missing #includes, found by modules build. 2015-05-11 22:41:07 +00:00
Analysis.h Redirect DataLayout from TargetMachine to Module in ComputeValueVTs() 2015-07-09 01:57:34 +00:00
AsmPrinter.h Implement target independent TLS compatible with glibc's emutls.c. 2015-07-28 16:24:05 +00:00
BasicTTIImpl.h [TargetTransformInfo][NFCI] Add TargetTransformInfo::isZExtFree. 2015-07-27 23:27:43 +00:00
CalcSpillWeights.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
CallingConvLower.h Remove 3 includes from MCInstrDesc.h and explicitly include them where needed 2015-05-15 21:58:42 +00:00
CommandFlags.h Implement target independent TLS compatible with glibc's emutls.c. 2015-07-28 16:24:05 +00:00
DAGCombine.h
DFAPacketizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
DIE.h AsmPrinter: Document why DIEValueList uses a linked-list, NFC 2015-06-27 01:19:17 +00:00
DIEValue.def Reapply "AsmPrinter: Change DIEValue to be stored by value" 2015-05-27 22:14:58 +00:00
DwarfStringPoolEntry.h AsmPrinter: Avoid creating symbols in DwarfStringPool 2015-05-24 16:58:59 +00:00
EdgeBundles.h [modules] "Specialize" a function by actually specializing a function template 2014-04-24 18:27:29 +00:00
FastISel.h Use MCSymbols for FastISel. 2015-06-23 12:21:54 +00:00
FaultMaps.h Revert "[FaultMaps] Move FaultMapParser to Object/" 2015-06-23 20:09:03 +00:00
FunctionLoweringInfo.h [StatepointLowering] Support of the gc.relocates for invoke statepoints. 2015-05-20 11:37:25 +00:00
GCMetadata.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCMetadataPrinter.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCs.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
GCStrategy.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
IntrinsicLowering.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ISDOpcodes.h Fix __builtin_setjmp in combination with sjlj exception handling. 2015-07-16 22:34:16 +00:00
LatencyPriorityQueue.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LexicalScopes.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h Add a GCStrategy for CoreCLR 2015-05-20 01:07:23 +00:00
LiveInterval.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LiveIntervalAnalysis.h LiveInterval: Document and enforce rules about empty subranges. 2015-07-16 18:55:35 +00:00
LiveIntervalUnion.h RAGreedy: Keep track of allocated PhysRegs internally 2015-07-14 17:38:17 +00:00
LivePhysRegs.h LivePhysRegs: Add support to add pristine registers when populating with live-in/live-out registers. 2015-07-01 17:17:17 +00:00
LiveRangeEdit.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LiveRegMatrix.h MachineRegisterInfo: Remove UsedPhysReg infrastructure 2015-07-14 17:52:07 +00:00
LiveStackAnalysis.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LiveVariables.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineBasicBlock.h Changes for MachineBasicBlock to use SortedVector for LiveIns. 2015-07-28 06:38:41 +00:00
MachineBlockFrequencyInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineBranchProbabilityInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineCombinerPattern.h MachineCombiner Pass for selecting faster instruction 2014-08-03 21:35:39 +00:00
MachineConstantPool.h Redirect DataLayout from TargetMachine to Module in MachineFunction 2015-07-07 18:20:57 +00:00
MachineDominanceFrontier.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineDominators.h Rename LoopInfo::Analyze() to LoopInfo::analyze() and turn its parameter type to const&. 2015-07-16 18:23:57 +00:00
MachineFrameInfo.h Add 'const' to a few more functions in MachineFrameInfo 2015-07-20 22:05:38 +00:00
MachineFunction.h MIR Serialization: Serialize the external symbol machine operands. 2015-07-21 16:59:53 +00:00
MachineFunctionAnalysis.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineFunctionInitializer.h MIR Serialization: Connect the machine function analysis pass to the MIR parser. 2015-06-15 20:30:22 +00:00
MachineFunctionPass.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineInstr.h MachineInstr: Explain the subtle semantics of uses()/defs() 2015-07-16 20:27:01 +00:00
MachineInstrBuilder.h Use MCSymbols for FastISel. 2015-06-23 12:21:54 +00:00
MachineInstrBundle.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineJumpTableInfo.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineLoopInfo.h Remove macro guards for extern template instantiations. 2015-07-13 17:21:31 +00:00
MachineMemOperand.h CodeGen: Push the ModuleSlotTracker through MachineOperands 2015-06-26 22:06:47 +00:00
MachineModuleInfo.h [CodeGen] Force emission of personality directive if explicitly specified 2015-07-14 19:22:51 +00:00
MachineModuleInfoImpls.h Clear the stub map in getSortedStubs. 2015-04-07 12:59:28 +00:00
MachineOperand.h CodeGen: Push the ModuleSlotTracker through MachineOperands 2015-06-26 22:06:47 +00:00
MachinePassRegistry.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachinePostDominators.h Use 'override/final' instead of 'virtual' for overridden methods 2015-04-11 02:11:45 +00:00
MachineRegionInfo.h Remove macro guards for extern template instantiations. 2015-07-13 17:21:31 +00:00
MachineRegisterInfo.h MIR Serialization: Serialize the simple virtual register allocation hints. 2015-07-24 20:35:40 +00:00
MachineScheduler.h Fix -Wextra-semi warnings. 2015-07-22 20:46:11 +00:00
MachineSSAUpdater.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachineTraceMetrics.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
MachineValueType.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
MachORelocation.h
MIRYamlMapping.h MIR Serialization: Serialize the unnamed basic block references. 2015-07-27 22:42:41 +00:00
Passes.h Redirect DataLayout from TargetMachine to Module in SjLjEHPrepare 2015-07-08 01:00:31 +00:00
PBQPRAConstraint.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PseudoSourceValue.h CodeGen: Push the ModuleSlotTracker through MachineOperands 2015-06-26 22:06:47 +00:00
RegAllocPBQP.h [PBQP] Do not add an edge between nodes with totally disjoint allowed registers 2015-03-01 20:39:34 +00:00
RegAllocRegistry.h
RegisterClassInfo.h [C++11] Replace OwningPtr with std::unique_ptr in places where it doesn't break the API. 2014-04-21 09:34:48 +00:00
RegisterPressure.h RegisterPressure: Add PressureDiff::dump() 2015-07-08 23:40:27 +00:00
RegisterScavenging.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ResourcePriorityQueue.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
RuntimeLibcalls.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ScheduleDAG.h Fix -Wextra-semi warnings. 2015-07-22 20:46:11 +00:00
ScheduleDAGInstrs.h Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types 2015-05-29 19:43:39 +00:00
ScheduleDFS.h Move remaining LLVM_ENABLE_DUMP conditionals out of the headers 2014-07-01 21:19:13 +00:00
ScheduleHazardRecognizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SchedulerRegistry.h Move the Target way of overriding DAG Scheduler to a target hook 2015-07-28 06:18:04 +00:00
ScoreboardHazardRecognizer.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SelectionDAG.h Add allnodes() iterator range to SelectionDAG. NFC. 2015-07-14 22:10:54 +00:00
SelectionDAGISel.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SelectionDAGNodes.h Move SDNode::IROrder in to padding to save space. NFC. 2015-07-14 21:54:55 +00:00
SlotIndexes.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
StackMaps.h [StackMap] Use lambdas to specify the sort and erase conditions. NFC. 2015-07-09 17:11:15 +00:00
StackProtector.h [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-14 00:51:57 +00:00
TargetLoweringObjectFileImpl.h Remove DataLayout from TargetLoweringObjectFile, redirect to Module 2015-07-16 06:04:17 +00:00
TargetSchedule.h [MachineCombiner] Work with itineraries 2015-07-15 08:22:23 +00:00
ValueTypes.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ValueTypes.td Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
VirtRegMap.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
WinEHFuncInfo.h Rename llvm.frameescape and llvm.framerecover to localescape and localrecover 2015-07-07 22:25:32 +00:00