summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* docs: Add design documentation for forward-edge CFI for indirect calls.Peter Collingbourne2015-12-011-3/+88
| | | | llvm-svn: 254464
* Fix a bug in IfConversion.cpp.Cong Hou2015-12-011-3/+2
| | | | | | | | The bug is introduced in r254377 which failed some tests on ARM, where a new probability is assigned to a successor but the provided BB may not be a successor. llvm-svn: 254463
* ARM: Change ArchCheck field to uint64_tMatthias Braun2015-12-011-1/+1
| | | | | | | | The values in this field are compared against getAvailableFeatures() which returns an uint64_t. This was causing problems in an internal branch. llvm-svn: 254462
* [ELF] MIPS paired R_MIPS_HI16/LO16 relocations supportSimon Atanasyan2015-12-016-21/+157
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Some MIPS relocations including `R_MIPS_HI16/R_MIPS_LO16` use combined addends. Such addend is calculated using addends of both paired relocations. Each `R_MIPS_HI16` relocation is paired with the next `R_MIPS_LO16` relocation. ABI requires to compute such combined addend in case of REL relocation record format only. For details see p. 4-17 at ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf This patch implements lookup of the next paired relocation suing new `InputSectionBase::findPairedRelocLocation` method. The primary disadvantage of this approach is that we put MIPS specific logic into the common code. The next disadvantage is that we lookup `R_MIPS_LO16` for each `R_MIPS_HI16` relocation, while in fact multiple `R_MIPS_HI16` might be paired with the single `R_MIPS_LO16`. From the other side this way allows us to keep `MipsTargetInfo` class stateless and implement later relocation handling in parallel. This patch does not support `R_MIPS_HI16/R_MIPS_LO16` relocations against `_gp_disp` symbol. In that case the relocations use a special formula for the calculation. That will be implemented later. Differential Revision: http://reviews.llvm.org/D15112 llvm-svn: 254461
* [Sanitizer] Increase kPcThreshold in slow unwinder after r254395.Alexey Samsonov2015-12-011-1/+1
| | | | llvm-svn: 254460
* AMDGPU: Disallow flat_scr in SI assemblerMatt Arsenault2015-12-012-3/+52
| | | | llvm-svn: 254459
* [PGO] Add support for reading multiple versions of indexed profile format ↵Xinliang David Li2015-12-013-50/+70
| | | | | | | | | | | profile data Profile readers using incompatible on-disk hash table format can now share the same implementation and interfaces. Differential Revision: http://reviews.llvm.org/D15100 llvm-svn: 254458
* Delete unused includes.Rafael Espindola2015-12-011-9/+0
| | | | llvm-svn: 254457
* IR: Clean up some duplicated code in ConstantDataSequential creation. NFCJustin Bogner2015-12-011-136/+57
| | | | | | | | ConstantDataArray::getImpl and ConstantDataVector::getImpl had a lot of copy pasta in how they handled sequences of constants. Break that out into a couple of simple functions. llvm-svn: 254456
* Clang-format an 80-column violation.Adrian Prantl2015-12-011-2/+6
| | | | llvm-svn: 254455
* clang-format LinkModules.cpp.Rafael Espindola2015-12-011-19/+19
| | | | | | | Most of the file has been changed recently and was already clang-format clean. llvm-svn: 254454
* use range-based for loops; NFCISanjay Patel2015-12-011-12/+6
| | | | llvm-svn: 254453
* AMDGPU: Optimize VOP2 operand legalizationMatt Arsenault2015-12-013-45/+149
| | | | | | | | | | | | | | | | | | Don't use commuteInstruction, and don't commute if doing so will not improve legality. Skip the more complex checks for literal operands and constant bus restrictions, which are not a concern for VOP2 instructions because src1 does not accept SGPRs or constants and few implicitly read vcc. This gets called quite a few times and the attempts at commuting are a significant fraction of the time spent in SIFixSGPRCopies, so it's somewhat worthwhile to optimize. With this patch and others leading up to it, this reduces the compile time of SIFixSGPRCopies on some of the LuxMark 2 kernels from ~8ms to ~5ms on my system. llvm-svn: 254452
* Add an accessor to Decl::LoadedFieldsFromExternalStorage for LLDB.Adrian Prantl2015-12-011-1/+4
| | | | | | | Patch by Greg Clayton Reviewed by Doug Gregor llvm-svn: 254451
* Update for llvm api change.Rafael Espindola2015-12-011-1/+1
| | | | llvm-svn: 254450
* Use references now that it is natural to do so.Rafael Espindola2015-12-019-107/+101
| | | | | | | The linker never takes ownership of a module or changes which module it is refering to, making it natural to use references. llvm-svn: 254449
* [X86] Make sure the prologue does not clobber EFLAGS when it lives accross it.Quentin Colombet2015-12-012-1/+123
| | | | | | This fixes PR25629. llvm-svn: 254448
* Use nullptr (NFC)Xinliang David Li2015-12-012-2/+2
| | | | llvm-svn: 254447
* Avoid picking up system headers in unittest by providing a fake libstdc++ ↵Benjamin Kramer2015-12-011-2/+4
| | | | | | | | | with a ridiculously high version number. The host libstdc++ may be horribly broken and we want the fake one to be picked up. This workaround is lame but I don't see a better way. llvm-svn: 254446
* don't repeat function/variable names in comments; NFCSanjay Patel2015-12-011-64/+57
| | | | llvm-svn: 254445
* Fix Thumb1 epilogue generationArtyom Skrobov2015-12-012-12/+115
| | | | | | | | | | | | | | Summary: This had been broken for a very long time, but nobody noticed until D14357 enabled shrink-wrapping by default. Reviewers: jroelofs, qcolombet Subscribers: tyomitch, llvm-commits, rengolin Differential Revision: http://reviews.llvm.org/D14986 llvm-svn: 254444
* [ELF] - Fixed bug leading to miss of tls relocation when @tlsgd and ↵George Rimar2015-12-016-13/+31
| | | | | | | | | | | | | | | | | @gottpoff relocations were used at the same time. Combination of @tlsgd and @gottpoff at the same time leads to miss of R_X86_64_TPOFF64 dynamic relocation. Patch fixes that. @tlsgd(%rip) - Allocate two contiguous entries in the GOT to hold a tls index structure (for passing to tls get addr). @gottpoff(%rip) - Allocate one GOT entry to hold a variable offset in initial TLS block (relative to TLS block end, %fs:0). The same situation can be observed for x86 (probably others too, not sure) with corresponding for that target relocations: @tlsgd, @gotntpoff. Differential revision: http://reviews.llvm.org/D15105 llvm-svn: 254443
* fix typo; NFCSanjay Patel2015-12-011-1/+1
| | | | llvm-svn: 254442
* [llvm-dwp] Deduplicate strings in the debug_str.dwo sectionDavid Blaikie2015-12-012-18/+22
| | | | | | | Also, ensure that references to those strings in debug_str_offsets.dwo correctly refer to the deduplicated strings. llvm-svn: 254441
* [AArch64] Fix a corner case in BitFeild selectWeiming Zhao2015-12-012-5/+33
| | | | | | | | | | | | | | | | | Summary: When not useful bits, BitWidth becomes 0 and APInt will not be happy. See https://llvm.org/bugs/show_bug.cgi?id=25571 We can just mark the operand as IMPLICIT_DEF is none bits of it is used. Reviewers: t.p.northover, jmolloy Subscribers: gberry, jmolloy, mgrang, aemerson, llvm-commits, rengolin Differential Revision: http://reviews.llvm.org/D14803 llvm-svn: 254440
* [MS ABI] Correctly mangle nullptr member pointers for variable templatesDavid Majnemer2015-12-012-11/+18
| | | | | | | Variable templates behave the same as class templates with regard to nullptr memeber pointers. llvm-svn: 254439
* AMDGPU: Report extractelement as free in cost modelMatt Arsenault2015-12-014-0/+125
| | | | | | | | | | | | The cost for scalarized operations is computed as N * (scalar operation cost + 1 extractelement + 1 insertelement). This partially fixes inflating the cost of scalarized operations since every operation is scalarized and free. I don't think we want any cost asociated with scalarization, but for now insertelement is still counted. I'm not sure if we should pretend that insertelement is also free, or add a way to compute a custom scalarization cost. llvm-svn: 254438
* [Verifier] Improve error for cross-module refsKeno Fischer2015-12-012-3/+57
| | | | | | | | | | | | | | By including the module name in the error message. This makes the error message much more useful and saves a trip to the debugger. Reviewers: dexonsmith Subscribers: dexonsmith, llvm-commits Differential Revision: http://reviews.llvm.org/D14473 llvm-svn: 254437
* Delete dead code.Rafael Espindola2015-12-012-6/+0
| | | | llvm-svn: 254436
* Use a forwarding constructor instead of an init method.Rafael Espindola2015-12-012-11/+5
| | | | llvm-svn: 254435
* Delete the setModule method from the Linker.Rafael Espindola2015-12-014-13/+6
| | | | | | | | | | | It was only used from LTO for a debug feature, and LTO can just create another linker. It is pretty odd to have a method to reset the module in the middle of a link. It would make IdentifiedStructTypes inconsistent with the Module for example. llvm-svn: 254434
* Reapply r254428.George Rimar2015-12-014-13/+12
| | | | | | | | | | | | | | | | | | | Fix was: uint32_t getLocalTlsIndexVA() { return getVA() + LocalTlsIndexOff; } => uint32_t getLocalTlsIndexVA() { return Base::getVA() + LocalTlsIndexOff; } Both works for my MSVS. Original commit message: [ELF] - Refactor of tls_index implementation for tls local dynamic model. Patch contains the next 2 changes: 1) static variable Out<ELFT>::LocalModuleTlsIndexOffset moved to Out<ELFT>::Got. At fact there is no meaning for it to be separated from GOT class because at each place of using it anyways needs to call GOT`s getVA(). Also it is impossible to have that offset and not have GOT. 2) addLocalModuleTlsIndex -> addLocalModelTlsIndex (word "Module" changed to "Model"). Not sure was it a mistype or not but I think that update is closer to Urlich terminology. Differential revision: http://reviews.llvm.org/D15113 llvm-svn: 254433
* revert r254428 [ELF] - Refactor of tls_index implementation for tls local ↵George Rimar2015-12-014-12/+13
| | | | | | | | | | | | | | dynamic model. It failed buildbot: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/3782/steps/build/logs/stdio Target.cpp In file included from /home/buildbot/Buildbot/Slave/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/llvm.src/tools/lld/ELF/Target.cpp:20: /home/buildbot/Buildbot/Slave/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/llvm.src/tools/lld/ELF/OutputSections.h:136:42: error: use of undeclared identifier 'getVA' uint32_t getLocalTlsIndexVA() { return getVA() + LocalTlsIndexOff; } llvm-svn: 254432
* [llvm-dwp] Correctly update debug_str_offsets.dwo when linking dwo filesDavid Blaikie2015-12-012-20/+71
| | | | | | | | | | This doesn't deduplicate strings in the debug_str section, nor does it properly wire up the index so that debug_info can /find/ these strings, but it does correct the str_offsets specifically. Follow up patches to address those related/next issues. llvm-svn: 254431
* Revert "Fix race during process interruption"Pavel Labath2015-12-014-108/+126
| | | | | | The android buildbot gets quite flaky after this change. I'm reverting it while I investigate. llvm-svn: 254430
* [ELF] - Target interface simplification, getGotRefReloc() removed.George Rimar2015-12-013-19/+2
| | | | | | | | Removes Target::getGotRefReloc() method to simplify Target class a little. Differential revision: http://reviews.llvm.org/D15107 llvm-svn: 254429
* [ELF] - Refactor of tls_index implementation for tls local dynamic model.George Rimar2015-12-014-13/+12
| | | | | | | | | | Patch contains the next 2 changes: 1) static variable Out<ELFT>::LocalModuleTlsIndexOffset moved to Out<ELFT>::Got. At fact there is no meaning for it to be separated from GOT class because at each place of using it anyways needs to call GOT`s getVA(). Also it is impossible to have that offset and not have GOT. 2) addLocalModuleTlsIndex -> addLocalModelTlsIndex (word "Module" changed to "Model"). Not sure was it a mistype or not but I think that update is closer to Urlich terminology. Differential revision: http://reviews.llvm.org/D15113 llvm-svn: 254428
* AMDGPU/SI: Remove REGISTER_STORE/REGISTER_LOAD code which is now deadTom Stellard2015-12-013-81/+0
| | | | | | | | | | Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D15050 llvm-svn: 254427
* AMDGPU: Use the default strings for data emission directivesTom Stellard2015-12-011-7/+0
| | | | | | | | | | | | | | Summary: This makes the assembly output look nicer and there is no reason to have custom strings for these. Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D14671 llvm-svn: 254426
* [x86] add a convenience method to check for FMA capability; NFCISanjay Patel2015-12-012-5/+4
| | | | llvm-svn: 254425
* Make appending var linking less of a special case.Rafael Espindola2015-12-011-75/+36
| | | | | | | | | | | | | | | | | | It has to be a bit special because: * materializeInitFor is not really supposed to call replaceAllUsesWith. The caller has a plain variable with Dst and expects just the initializer to be set, not for it to be removed. * Calling mutateType as we used to do before gets some type inconsistency which breaks the bitcode writer. * If linkAppendingVarProto create a dest decl with the correct type to avoid the above problems, it needs to put the original dst init in some side table for materializeInitFor to use. In the end the simplest solution seems to be to just have linkAppendingVarProto do all the work and set ValueMap[SrcGV to avoid recursion. llvm-svn: 254424
* It appears that this horrible mutating copy constructor is unused. Kill it ↵Aaron Ballman2015-12-011-5/+0
| | | | | | with fire. llvm-svn: 254423
* [ThinLTO] Wrap dbgs() output in DEBUG macroTeresa Johnson2015-12-011-5/+5
| | | | | | Missed in a couple places. llvm-svn: 254422
* [ThinLTO] Remove stale comment (NFC)Teresa Johnson2015-12-011-4/+0
| | | | | | Stale as of r254036 which added basic profitability check. llvm-svn: 254421
* Revert r254417 ("[tsan] Enable Thread Sanitizer on OS X builds by default").Kuba Brecka2015-12-011-1/+8
| | | | | | A ton of tests fail on OS X 10.10, because dyld auto-interposition is only available in 10.11. llvm-svn: 254420
* Simplify test. NFC.Rafael Espindola2015-12-011-3/+2
| | | | llvm-svn: 254419
* Bring r254336 back:Rafael Espindola2015-12-018-80/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The difference is that now we don't error on out-of-comdat access to internal global values. We copy them instead. This seems to match the expectation of COFF linkers (see pr25686). Original message: Start deciding earlier what to link. A traditional linker is roughly split in symbol resolution and "copying stuff". The two tasks are badly mixed in lib/Linker. This starts splitting them apart. With this patch there are no direct call to linkGlobalValueBody or linkGlobalValueProto. Everything is linked via WapValue. This also includes a few fixes: * A GV goes undefined if the comdat is dropped (comdat11.ll). * We error if an internal GV goes undefined (comdat13.ll). * We don't link an unused comdat. The first two match the behavior of an ELF linker. The second one is equivalent to running globaldce on the input. llvm-svn: 254418
* [tsan] Enable Thread Sanitizer on OS X builds by defaultKuba Brecka2015-12-011-8/+1
| | | | | | Differential Revision: http://reviews.llvm.org/D15109 llvm-svn: 254417
* [LIR] Push check into helper function. NFC.Chad Rosier2015-12-011-4/+4
| | | | llvm-svn: 254416
* Add a new checker, cert-err58-cpp, that checks for static or thread_local ↵Aaron Ballman2015-12-019-16/+170
| | | | | | | | objects that use a throwing constructor. This check corresponds to the CERT secure coding rule: https://www.securecoding.cert.org/confluence/display/cplusplus/ERR58-CPP.+Constructors+of+objects+with+static+or+thread+storage+duration+must+not+throw+exceptions llvm-svn: 254415
OpenPOWER on IntegriCloud