summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* IR: Fix type-refs in testcase from r266548Duncan P. N. Exon Smith2016-04-171-11/+11
| | | | | | | | | | | | | | | | | There's a hole in the verifier right now: if a module has no compile units, it never checks that all the string-based DITypeRefs get resolved. As a result, this testcase didn't fail the verifier, even there were references to `!"has-uuid"` instead of `!"uuid"` (the former was a composite type's 'name:' field, the latter its 'identifier:' field). I'm currently working on removing string-based type refs entirely, and this testcase started failing (because the upgrade script can't resolve the type refs). Rather than fixing the (about-to-be-removed) hole in the verifier, I'm just going to fix the test so that my upgrade script handles it. llvm-svn: 266553
* IR: Use getRawScope() when verifyingDuncan P. N. Exon Smith2016-04-171-2/+2
| | | | | | | | | | | Fix a couple of places in the Verifier that call `getScope()` instead of `getRawScope()`. Both DIDerivedType::getScope and DICompositeType::getScope return a DITypeRef right now (which wraps a Metadata*) so I don't think there's currently an observable bug. I found this because a future commit that will change them to cast to DIScope*. llvm-svn: 266552
* Fix a typo in rL265762Sanjoy Das2016-04-172-1/+13
| | | | | | | | | I accidentally replaced `mayBeOverridden` with `!isInterposable`. Remove the negation and add a test case that would've caught this. Many thanks to Håkan Hjort for spotting this! llvm-svn: 266551
* Revert "use range loop, try to make comments more meaningful; NFCI"Duncan P. N. Exon Smith2016-04-171-7/+10
| | | | | | | This reverts commit r266541 since it introduces a use-after-free: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/11471 llvm-svn: 266550
* IR: Use an explicit map for debug info type uniquingDuncan P. N. Exon Smith2016-04-1715-10/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than relying on the structural equivalence of DICompositeType to merge type definitions, use an explicit map on the LLVMContext that LLParser and BitcodeReader consult when constructing new nodes. Each non-forward-declaration DICompositeType with a non-empty 'identifier:' field is stored/loaded from the type map, and the first definiton will "win". This map is opt-in: clients that expect ODR types from different modules to be merged must call LLVMContext::ensureDITypeMap. - Clients that just happen to load more than one Module in the same LLVMContext won't magically merge types. - Clients (like LTO) that want to continue to merge types based on ODR identifiers should opt-in immediately. I have updated LTOCodeGenerator.cpp, the two "linking" spots in gold-plugin.cpp, and llvm-link (unless -disable-debug-info-type-map) to set this. With this in place, it will be straightforward to remove the DITypeRef concept (i.e., referencing types by their 'identifier:' string rather than pointing at them directly). llvm-svn: 266549
* IR: Use ODR to unique DICompositeType membersDuncan P. N. Exon Smith2016-04-174-2/+133
| | | | | | | | | | | | | | Merge members that are describing the same member of the same ODR type, even if other bits differ. If the file or line differ, we don't care; if anything else differs, it's an ODR violation (and we still don't really care). For DISubprogram declarations, this looks at the LinkageName and Scope. For DW_TAG_member instances of DIDerivedType, this looks at the Name and Scope. In both cases, we know that the Scope follows ODR rules if it has a non-empty identifier. llvm-svn: 266548
* [Target] Reduce size of the LoadExtActions array in TargetLoweringBase by ↵Craig Topper2016-04-171-7/+11
| | | | | | half. Saving ~18K bytes from the array. llvm-svn: 266547
* [Target] Remove checks for Simple VTs before calling routines that can ↵Craig Topper2016-04-171-10/+7
| | | | | | handle Extended VTs too. NFC llvm-svn: 266546
* [Target] Fix an assertion that should have been updated when the code below ↵Craig Topper2016-04-171-1/+1
| | | | | | it was changed in r251033. llvm-svn: 266545
* LangRef: Removed some outdated text about DIDerivedTypeDuncan P. N. Exon Smith2016-04-171-5/+2
| | | | | | | This text is also incorrect (much like r266540). It looks like I missed updating some of what I moved from SourceLevelDebugging.rst in r232566. llvm-svn: 266544
* Linker: Clarify test/Linker/type-unique-odr-a.ll, NFCDuncan P. N. Exon Smith2016-04-171-17/+23
| | | | | | | | | | | | | | Split up the long RUN and clarify the CHECK lines: - Explicitly confirm there are no other subprograms inside of "A". - Remove checks for "bar" and "baz", which were just implicitly checking that there were no other subprograms inside of "A". This prepares for adding a RUN line which links the two files in the opposite direction. llvm-svn: 266543
* IR: Add a configuration point for MDNodeInfo::isEqual, NFCDuncan P. N. Exon Smith2016-04-161-2/+18
| | | | | | | | This commit has no functionality change, but it adds a configuration point for MDNodeInfo::isEqual to allow custom uniquing of subclasses of MDNode, minimizing the diff of a follow-up. llvm-svn: 266542
* use range loop, try to make comments more meaningful; NFCISanjay Patel2016-04-161-10/+7
| | | | llvm-svn: 266541
* LangRef: Fix some bugs in debug info descriptionsDuncan P. N. Exon Smith2016-04-161-4/+9
| | | | | | Fix descriptions of DICompositeType and DIDerivedType. llvm-svn: 266540
* IR: Remove extra blank line, NFCDuncan P. N. Exon Smith2016-04-161-1/+0
| | | | llvm-svn: 266539
* LTO: Use a common LibLTOCodeGenerator::init, NFCDuncan P. N. Exon Smith2016-04-161-3/+5
| | | | llvm-svn: 266538
* ValueMapper: Separate mapping of distinct and uniqued nodes (again)Duncan P. N. Exon Smith2016-04-161-220/+204
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the result of a mapped distinct node is known up front, it's more efficient to map them separately from uniqued nodes. This commit pulls them out of the post-order traversal and stores them in a worklist to be remapped at the top-level. This is essentially reapplying r244181 ("ValueMapper: Rotate distinct node remapping algorithm") to the new iterative algorithm from r265456 ("ValueMapper: Rewrite Mapper::mapMetadata without recursion"). Now that the traversal logic only handles uniqued MDNodes, it's much simpler to inline it all into MDNodeMapper::createPOT (I've killed the MDNodeMapper::push and MDNodeMapper::tryToPop helpers and localized the traversal worklist). The resulting high-level algorithm for MDNodeMapper::map now looks like this: - Distinct nodes are immediately mapped and added to MDNodeMapper::DistinctWorklist using MDNodeMapper::mapDistinctNode. - Uniqued nodes are mapped via MDNodeMapper::mapTopLevelUniquedNode, which traverses the transitive uniqued subgraph of a node to calculate uniqued node mappings in bulk. - This is a simplified version of MDNodeMapper::map from before this commit (originally r265456) that doesn't traverse through any distinct nodes. - Distinct nodes are added to MDNodeMapper::DistinctWorklist via MDNodeMapper::mapDistinctNode. - This uses MDNodeMapper::createPOT to fill a MDNodeMapper::UniquedGraph (a post-order traversal and side table), UniquedGraph::propagateChanges to track which uniqued nodes need to change, and MDNodeMapper::mapNodesInPOT to create the uniqued nodes. - Placeholders for forward references are now only needed when there's a uniquing cycle (a cycle of uniqued nodes unbroken by distinct nodes). This is the key functionality change that we're reintroducing (from r244181). As of r265456, a temporary forward reference might be needed for any cycle that involved uniqued nodes. - After mapping the first node appropriately, MDNodeMapper::map works through MDNodeMapper::DistinctWorklist. For each distinct node, its operands are remapped with MDNodeMapper::mapDistinctNode and MDNodeMapper::mapTopLevelUniquedNode until all nodes have been mapped. Sadly there's nothing observable I can test here; no real functionality change, just a compile-time speedup from reduced malloc traffic. llvm-svn: 266537
* ValueMapper: Only put cyclic nodes into CyclicNodes, NFCIDuncan P. N. Exon Smith2016-04-161-2/+11
| | | | | | | | | | | As a minor fixup to r266258, only track nodes that needed a placeholder in CyclicNodes in MDNodeMapper::mapUniquedNodes. There should be no observable functionality change, just some local memory savings because CyclicNodes only needs to grow to accommodate nodes that are actually involved in cycles. (This was the original intent of r266258, or else the vector would have been called "ChangedNodes".) llvm-svn: 266536
* [X86][AVX] Add shuffle combine tests for MOVDDUP/MOVSHDUP/MOVSLDUPSimon Pilgrim2016-04-162-0/+121
| | | | | | 128, 256 and 512 bit implementations (some not yet supported by combineX86ShuffleChain) llvm-svn: 266535
* [X86] Use ternary operator to reduce code slightly. NFCCraig Topper2016-04-161-8/+3
| | | | llvm-svn: 266534
* [X86][XOP] Added VPPERM constant mask decoding and target shuffle combining ↵Simon Pilgrim2016-04-164-5/+80
| | | | | | | | support Added additional test that peeks through bitcast to v16i8 mask llvm-svn: 266533
* Add missing #include to fix buildVedant Kumar2016-04-161-0/+1
| | | | | | | Failing bot: http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental/23112/ llvm-svn: 266532
* [X86][XOP] More VPPERM shuffle mask decode testsSimon Pilgrim2016-04-161-0/+104
| | | | | | As requested by D18441 llvm-svn: 266531
* Fix cmake build after r266524.Oleksiy Vyalov2016-04-161-0/+1
| | | | llvm-svn: 266530
* ValueMapper: Fix unused var warning. NFCSimon Atanasyan2016-04-161-0/+2
| | | | llvm-svn: 266529
* Remove links to deleted TODOs.Simon Atanasyan2016-04-161-5/+0
| | | | llvm-svn: 266528
* [ELF] Include Twine.h header to restore LLD build after r266524. NFCSimon Atanasyan2016-04-161-0/+1
| | | | llvm-svn: 266527
* Recommitted 266457 with fix:George Rimar2016-04-168-28/+280
| | | | | | | | | | | | | | | | | | | | * Do script driven layout only if SECTIONS section exist. Initial commit message: [ELF] - Implemented basic location counter support. This patch implements location counter support. It also separates assign addresses for sections to assignAddressesScript() if it scipt exists. Main testcase is test/ELF/linkerscript-locationcounter.s, It contains some work with location counter. It is basic now. Implemented location counter assignment and '+' operations. Patch by myself with LOTS of comments and design suggestions from Rui Ueyama. Differential revision: http://reviews.llvm.org/D18499 llvm-svn: 266526
* Add missing headers (fix build after headers cleanup in LLVM)Mehdi Amini2016-04-161-0/+1
| | | | | From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266525
* Remove some unneeded headers and replace some headers with forward class ↵Mehdi Amini2016-04-1640-61/+43
| | | | | | | | | | | declarations (NFC) Differential Revision: http://reviews.llvm.org/D19154 Patch by Eugene Kosov <claprix@yandex.ru> From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266524
* Add SVN version to libLLVMLTOMehdi Amini2016-04-163-9/+104
| | | | | | | | | | | | | | | | | | | | Summary: For Incremental LTO, we need to make sure that an old cache entry is not used when incrementally re-linking with a new libLTO. Adding a global LLVM_REVISION in llvm-config.h would for to rebuild/relink the world for every "git pull"/"svn update". So instead only libLTO is made dependent on the VCS and will be rebuilt (and the dependent binaries relinked, i.e. as of today: libLTO.dylib and llvm-lto). Reviewers: beanz Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D18987 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266523
* Replace hardcoded comment at 'lit.site.cfg.in'Alex Denisov2016-04-162-4/+4
| | | | | | | | | | | | At the moment almost every lit.site.cfg.in contains two lines comment: ## Autogenerated by LLVM/Clang configuration. # Do not edit! The patch adds variable LIT_SITE_CFG_IN_HEADER, that is replaced from configure_lit_site_cfg with the note and some useful information. llvm-svn: 266522
* Replace hardcoded comment at 'lit.site.cfg.in'Alex Denisov2016-04-162-4/+4
| | | | | | | | | | | | At the moment almost every lit.site.cfg.in contains two lines comment: ## Autogenerated by LLVM/Clang configuration. # Do not edit! The patch adds variable LIT_SITE_CFG_IN_HEADER, that is replaced from configure_lit_site_cfg with the note and some useful information. llvm-svn: 266521
* Replace hardcoded comment at 'lit.site.cfg.in'Alex Denisov2016-04-1616-26/+19
| | | | | | | | | | | | At the moment almost every lit.site.cfg.in contains two lines comment: ## Autogenerated by LLVM/Clang configuration. # Do not edit! The patch adds variable LIT_SITE_CFG_IN_HEADER, that is replaced from configure_lit_site_cfg with the note and some useful information. llvm-svn: 266520
* ThinLTO: Move the ODR resolution to be based purely on the summary.Mehdi Amini2016-04-165-85/+135
| | | | | | | | | This is a requirement for the cache handling in D18494 Differential Revision: http://reviews.llvm.org/D18908 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266519
* Replace hardcoded comment at 'lit.site.cfg.in'Alex Denisov2016-04-162-4/+4
| | | | | | | | | | | | At the moment almost every lit.site.cfg.in contains two lines comment: ## Autogenerated by LLVM/Clang configuration. # Do not edit! The patch adds variable LIT_SITE_CFG_IN_HEADER, that is replaced from configure_lit_site_cfg with the note and some useful information. llvm-svn: 266518
* ThinLTO: Make aliases explicit in the summaryMehdi Amini2016-04-1611-41/+271
| | | | | | | | | | | To be able to work accurately on the reference graph when taking decision about internalizing, promoting, renaming, etc. We need to have the alias information explicit. Differential Revision: http://reviews.llvm.org/D18836 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266517
* Replace hardcoded comment at 'lit.site.cfg.in'Alex Denisov2016-04-164-8/+8
| | | | | | | | | | | | At the moment almost every lit.site.cfg.in contains two lines comment: ## Autogenerated by LLVM/Clang configuration. # Do not edit! The patch adds variable LIT_SITE_CFG_IN_HEADER, that is replaced from configure_lit_site_cfg with the note and some useful information. llvm-svn: 266516
* Replace hardcoded comment at 'lit.site.cfg.in'Alex Denisov2016-04-163-4/+6
| | | | | | | | | | | | At the moment almost every lit.site.cfg.in contains two lines comment: ## Autogenerated by LLVM/Clang configuration. # Do not edit! The patch adds variable LIT_SITE_CFG_IN_HEADER, that is replaced from configure_lit_site_cfg with the note and some useful information. llvm-svn: 266515
* Do not modify a cl::opt programmatically, global mutable state is evil.Mehdi Amini2016-04-161-9/+13
| | | | | | | Found by TSAN on ThinLTO. From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266514
* ValueMapper: Stop memoizing ConstantAsMetadataDuncan P. N. Exon Smith2016-04-162-13/+41
| | | | | | | | | | | | Stop memoizing ConstantAsMetadata in ValueMapper::mapMetadata. Now we have to recompute it, but these metadata aren't particularly common, and it restricts the lifetime of the Metadata map unnecessarily. (The motivation is that I have a patch which uses a single Metadata map for the lifetime of IRMover. Mehdi profiled r266446 with the patch applied and we saw a pretty big speedup in lib/Linker.) llvm-svn: 266513
* [DebugInfo] Correct the assertion introduced in r266509 + update test.Davide Italiano2016-04-162-3/+4
| | | | llvm-svn: 266512
* Add missing override keyword to silence -Winconsistent-missing-override. NFCCraig Topper2016-04-161-1/+1
| | | | llvm-svn: 266511
* Reapply "ValueMapper: Eliminate cross-file co-recursion, NFC"Duncan P. N. Exon Smith2016-04-164-174/+496
| | | | | | | | | | | | | | | | | | | | | | | This reverts commit r266507, reapplying r266503 (and r266505 "ValueMapper: Use API from r266503 in unit tests, NFC") completely unchanged. I reverted because of a bot failure here: http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/16810/ However, looking more closely, the failure was from a host-compiler crash (clang 3.7.1) when building: lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DwarfAccelTable.cpp.o I didn't modify that file, or anything it includes, with that commit. The next build (which hadn't picked up my revert) got past it: http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/16811/ I think this was just unfortunate timing. I suppose the bot must be flakey. llvm-svn: 266510
* [DebugInfo] Reduce size of DILocalVariable from 40 to 32 bytes.Davide Italiano2016-04-161-3/+6
| | | | | | | | This significantly contributes to peak memory usage during a LTO Release+DebugInfo build of clang. In my profile the peak usage is around 164MB before this change and ~130MB after. llvm-svn: 266509
* AMDGPU: Enable LocalStackSlotAllocation passMatt Arsenault2016-04-164-20/+231
| | | | | | | | | | | This resolves more frame indexes early and folds the immediate offsets into the scratch mubuf instructions. This cleans up a lot of the mess that's currently emitted, such as emitting add 0s and repeatedly initializing the same register to 0 when spilling. llvm-svn: 266508
* Revert "ValueMapper: Eliminate cross-file co-recursion, NFC"Duncan P. N. Exon Smith2016-04-164-496/+174
| | | | | | | | | | | | This reverts commit r266503, in case it's the root cause of this bot failure: http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/16810 I'm also reverting r266505 -- "ValueMapper: Use API from r266503 in unit tests, NFC" -- since it's in the way. llvm-svn: 266507
* AMDGPU: Use s_addk_i32 / s_mulk_i32Matt Arsenault2016-04-166-18/+185
| | | | llvm-svn: 266506
* ValueMapper: Use API from r266503 in unit tests, NFCDuncan P. N. Exon Smith2016-04-161-52/+52
| | | | | | | I'm not in a hurry to migrate all the users, but the unit tests at least should use the new API. llvm-svn: 266505
* [LTO] Don't crash on a BitcodeFile without DataLayout.Davide Italiano2016-04-162-0/+14
| | | | | | Emit an error instead. llvm-svn: 266504
OpenPOWER on IntegriCloud