summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/TargetLoweringObjectFile.cpp
AgeCommit message (Collapse)Author
2014-01-03Make the llvm mangler depend only on DataLayout.Rafael Espindola
Before this patch any program that wanted to know the final symbol name of a GlobalValue had to link with Target. This patch implements a compromise solution where the mangler uses DataLayout. This way, any tool that already links with Target (llc, clang) gets the exact behavior as before and new IR files can be mangled without linking with Target. With this patch the mangler is constructed with just a DataLayout and DataLayout is extended to include the information the Mangler needs. llvm-svn: 198438
2013-12-05Remove the isImplicitlyPrivate argument of getNameWithPrefix.Rafael Espindola
getSymbolWithGlobalValueBase use is to create a name of a new symbol based on the name of an existing GV. Assert that and then remove the last call to pass true to isImplicitlyPrivate. This gives the mangler API a 1:1 mapping from GV to names, which is what we need to drop the mangler dependency on the target (and use an extended datalayout instead). llvm-svn: 196472
2013-12-02Move getSymbolWithGlobalValueBase to TargetLoweringObjectFile.Rafael Espindola
This allows it to be used in TargetLoweringObjectFileImpl.cpp. llvm-svn: 196117
2013-10-29Move getSymbol to TargetLoweringObjectFile.Rafael Espindola
This allows constructing a Mangler with just a TargetMachine. llvm-svn: 193630
2013-07-02[DebugInfo] Allow getDebugThreadLocalSymbol to return MCExprUlrich Weigand
This allows getDebugThreadLocalSymbol to return a generic MCExpr instead of just a MCSymbolRefExpr. This is in preparation for supporting debug info for TLS variables on PowerPC, where we need to describe the variable location using a more complex expression than just MCSymbolRefExpr. llvm-svn: 185460
2013-06-28DebugInfo: PR14728: TLS supportDavid Blaikie
Based on GCC's output for TLS variables (OP_constNu, x@dtpoff, OP_lo_user), this implements debug info support for TLS in ELF. Verified that this output is correct/sufficient on Linux (using gold - if you're using binutils-ld, you'll need something with the fix for http://sourceware.org/bugzilla/show_bug.cgi?id=15685 in it). Support on non-ELF is sort of "arbitrary" at the moment - if Apple folks want to discuss (or just go ahead & implement) how this should work in MachO, etc, I'm open. llvm-svn: 185203
2013-01-02Move all of the header files which are involved in modelling the LLVM IRChandler Carruth
into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. llvm-svn: 171366
2012-12-03Use the new script to sort the includes of every file under lib.Chandler Carruth
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] llvm-svn: 169131
2012-11-14Use TARGET2 relocation for TType references on ARM.Anton Korobeynikov
Do some cleanup of the code while here. Inspired by patch by Logan Chien! llvm-svn: 167904
2012-10-08Move TargetData to DataLayout.Micah Villmow
llvm-svn: 165402
2012-05-05Typo.Eric Christopher
llvm-svn: 156226
2012-03-27Prune some includesCraig Topper
llvm-svn: 153502
2012-02-06Remove some dead code and tidy things up now that vectors use ConstantDataVectorChris Lattner
instead of always using ConstantVector. llvm-svn: 149912
2012-01-24C++, CBE, and TLOF support for ConstantDataSequentialChris Lattner
llvm-svn: 148805
2012-01-10Add 'llvm_unreachable' to passify GCC's understanding of the constraintsChandler Carruth
of several newly un-defaulted switches. This also helps optimizers (including LLVM's) recognize that every case is covered, and we should assume as much. llvm-svn: 147861
2012-01-10Remove unnecessary default cases in switches that cover all enum values.David Blaikie
llvm-svn: 147855
2011-12-02Move global variables in TargetMachine into new TargetOptions class. As an APINick Lewycky
change, now you need a TargetOptions object to create a TargetMachine. Clang patch to follow. One small functionality change in PTX. PTX had commented out the machine verifier parts in their copy of printAndVerify. That now calls the version in LLVMTargetMachine. Users of PTX who need verification disabled should rely on not passing the command-line flag to enable it. llvm-svn: 145714
2011-07-20Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc.Evan Cheng
There is still a bit more refactoring left to do in Targets. But we are now very close to fixing all the layering issues in MC. llvm-svn: 135611
2011-07-20Add MCObjectFileInfo and sink the MCSections initialization code fromEvan Cheng
TargetLoweringObjectFileImpl down to MCObjectFileInfo. TargetAsmInfo is done to one last method. It's *almost* gone! llvm-svn: 135569
2011-07-18land David Blaikie's patch to de-constify Type, with a few tweaks.Chris Lattner
llvm-svn: 135375
2011-07-13Fix up TargetLoweringObjectFile ctors to properly initialize fields.Evan Cheng
llvm-svn: 135068
2011-06-23Use the presence of the __compact_unwind section to indicate that a targetBill Wendling
supports compact unwind info instead of having a separate flag indicating this. llvm-svn: 133685
2011-06-22Add a flag that indicates whether a target supports compact unwind info or not.Bill Wendling
llvm-svn: 133662
2011-06-22Add a __LD,__compact_unwind section.Bill Wendling
If the linker supports it, this will hold the CIE and FDE information in a compact format. The implementation of the compact unwinding emission is coming soon. llvm-svn: 133658
2011-06-19Fix a FIXME by making GlobalVariable::getInitializer() return aJay Foad
const Constant *. llvm-svn: 133400
2011-05-05Remove a flag that would set the ".eh" symbol as .globl. MachO was the only oneBill Wendling
who used this flag, and it now emits CFI and doesn't emit this anymore. All other targets left this flag "false". <rdar://problem/8486371> llvm-svn: 130918
2011-05-01GCC uses a different encoding of pointers in the FDE when usingRafael Espindola
-fno-dwarf2-cfi-asm. Implement the same behavior. llvm-svn: 130637
2011-04-27Remove unnecessary argument.Rafael Espindola
llvm-svn: 130343
2011-04-27Rename getPersonalityPICSymbol to getCFIPersonalitySymbol, document it, andRafael Espindola
give it a bit more responsibility. Also implement it for MachO. If hacked to use cfi, 32 bit MachO will produce .cfi_personality 155, L___gxx_personality_v0$non_lazy_ptr and 64 bit will produce .cfi_presonality ___gxx_personality_v0 The general idea is that .cfi_personality gets passed the final symbol. It is up to codegen to produce it if using indirect representation (like 32 bit MachO), but it is up to MC to decide which relocations to create. llvm-svn: 130341
2011-04-20Remove unused arguments.Rafael Espindola
llvm-svn: 129844
2011-04-16MSVC needs the return 0 to compile.Francois Pichet
llvm-svn: 129640
2011-04-16Put each personality function in a section. This fixes the gnu ld warning:Rafael Espindola
error in foo.o; no .eh_frame_hdr table will be created. llvm-svn: 129635
2011-04-15Add 129518 back with a fix for when we are producing eh just because of ↵Rafael Espindola
debug info. Change ELF systems to use CFI for producing the EH tables. This reduces the size of the clang binary in Debug builds from 690MB to 679MB. llvm-svn: 129571
2011-04-15Revert r129518, "Change ELF systems to use CFI for producing the EH tables. ↵NAKAMURA Takumi
This reduces the" It broke several builds. llvm-svn: 129557
2011-04-14Change ELF systems to use CFI for producing the EH tables. This reduces theRafael Espindola
size of the clang binary in Debug builds from 690MB to 679MB. llvm-svn: 129518
2011-01-23Delay the creation of eh_frame so that the user can change the defaults.Rafael Espindola
Add support for SHT_X86_64_UNWIND. llvm-svn: 124059
2011-01-18minor change to rafael's recent patches: if something isChris Lattner
constant but requires a unique address, we can still put it in a readonly section, just not a mergable one. llvm-svn: 123711
2011-01-16Only put unnamed_addr constants in mergeable sections. Fixes PR8297.Rafael Espindola
llvm-svn: 123585
2010-09-27the latest assembler that runs on powerpc 10.4 machines doesn'tChris Lattner
support aligned comm. Detect when compiling for 10.4 and don't emit an alignment for comm. THis will hopefully fix PR8198. llvm-svn: 114817
2010-06-18Eliminate unnecessary uses of getZExtValue().Dan Gohman
llvm-svn: 106279
2010-04-07rename llvm::llvm_report_error -> llvm::report_fatal_errorChris Lattner
llvm-svn: 100709
2010-03-17fix GetOrCreateTemporarySymbol to require a name, clientsChris Lattner
should use CreateTempSymbol() if they don't care about the name. llvm-svn: 98712
2010-03-12finally give Mangler a getSymbol method, which returns an MCSymbolChris Lattner
for a global instead of messing around with string buffers. llvm-svn: 98366
2010-03-12make TargetLoweringObjectFile::getExprForDwarfReferenceChris Lattner
just make unnamed temp symbols instead of having to come up with its own names. llvm-svn: 98324
2010-03-11fix a fixme in TargetLoweringObjectFile::getExprForDwarfReferenceChris Lattner
where we used ot create an MCSymbol for ".". Now emit an assembler temporary label and reference it instead of "." textually. rdar://7739457 llvm-svn: 98292
2010-03-11rename getSymbolForDwarf* to getExprForDwarf* since it returnsChris Lattner
an MCExpr and not an MCSymbol. Change it to take an MCStreamer, which is currently unused. No functionality change. llvm-svn: 98278
2010-03-10move three lowering hooks from MAI to TLOF and make one of themChris Lattner
semantic instead of syntactic. This completes MCization of darwin/x86[-64]! llvm-svn: 98145
2010-03-10set the temporary bit on MCSymbols correctly.Chris Lattner
llvm-svn: 98124
2010-02-16Make error statement more personal.Bill Wendling
llvm-svn: 96410
2010-02-15Move TLOF implementations to libCodegen to resolve layering violation.Anton Korobeynikov
llvm-svn: 96288