summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Add machine type check for MIPS-specific code path.Rui Ueyama2015-12-241-1/+1
| | | | llvm-svn: 256355
* Split Defined and DefinedElf.Rafael Espindola2015-12-246-29/+52
| | | | | | | This is similar to what was done for Undefined and opens the way for having a symbol defined in bitcode. llvm-svn: 256354
* WebAssembly: remove 'external' from testJF Bastien2015-12-231-1/+4
| | | | | | | | | | | | Summary: Linker testing was sad at seeing an unresolved external symbol. For now don't do that: it's valid but we're not playing with multi-file linking yet, and the LLVM tests are used as hacky sanity tests for single-file linking (the GCC torture tests are much better for this purpose). Another solution would be to use '.extern' to make the intent explicit (don't simple-file link this, there's an unresolved symbol), some assemblers use '.extern' while others ignore it, so we wouldn't really be inventing anything new. Reviewers: sunfish, kripken Subscribers: jfb, llvm-commits, dschuff Differential Revision: http://reviews.llvm.org/D15753 llvm-svn: 256353
* [Statepoints] Use Indirect operands for spill slotsPhilip Reames2015-12-234-39/+88
| | | | | | | | | | Teach the statepoint lowering code to emit Indirect stackmap entries for spill inserted by StatepointLowering (i.e. SelectionDAG), but Direct stackmap entries for in-IR allocas which represent manual stack slots. This is what the docs call for (http://llvm.org/docs/StackMaps.html#stack-map-format), but we've been emitting both as Direct. This was pointed out recently on the mailing list as a bug. It also blocks http://reviews.llvm.org/D15632 which extends the lowering to handle vector-of-pointers since only Indirect references can encode a variable sized slot. To implement this, I introduced a new flag on the StackObject class used to maintian information about stack slots. I original considered (and prototyped in http://reviews.llvm.org/D15632), the idea of using the existing isSpillSlot flag, but end up deciding that was a bit too risky and that the cost of adding a new flag was low. Having the new flag will also allow us - in the future - to emit better comments in verbose assembly which indicate where a particular stack spill around a call comes from. (deopt, gc, regalloc). Differential Revision: http://reviews.llvm.org/D15759 llvm-svn: 256352
* llvm-dwarfdump: Add support for dumping .dSYM bundles.Adrian Prantl2015-12-232-2/+49
| | | | | | | | This replicates the logic of Darwin dwarfdump for manually opening up .dSYM bundles without introducing any new dependencies. <rdar://problem/20491670> llvm-svn: 256350
* Replace isa+cast with dyn_cast and obey the no else after return rule.Yaron Keren2015-12-231-6/+2
| | | | llvm-svn: 256349
* Move function to the file where it is used.Rafael Espindola2015-12-233-18/+12
| | | | llvm-svn: 256348
* [llvm-readobj] Use stderr and not stdout for error messages.Davide Italiano2015-12-231-2/+2
| | | | llvm-svn: 256347
* [MemOperands] Clarify code around dropping memory operands [NFC]Philip Reames2015-12-232-3/+6
| | | | | | Clarify a comment about what it means to drop memory operands from an instruction. While I'm adding change the name of the method slightly to make it a bit more clear what's going on when reading calling code. llvm-svn: 256346
* [Function] Properly remove use when clearing personalityKeno Fischer2015-12-232-9/+34
| | | | | | | | | | | | | | | | | Summary: We need to actually remove the use of the personality function, otherwise we can run into trouble if we want to e.g. delete the personality function because ther's no way to get rid of its uses. Do this by resetting to ConstantPointerNull value that the operands are set to when first allocated. Reviewers: vsk, dexonsmith Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15752 llvm-svn: 256345
* Fix SCEV r256338.JF Bastien2015-12-231-2/+2
| | | | llvm-svn: 256344
* clang-format: Lower penalty for breaking between array subscripts.Daniel Jasper2015-12-232-1/+3
| | | | | | | | | | | | Before: aaaaaaaaaaaaaaaaaaaaaaaaa[aaaaaaaaaaa(aaaaaaaaaaaa)][bbbbbbbbbbb( bbbbbbbbbbbb)] After: aaaaaaaaaaaaaaaaaaaaaaaaa[aaaaaaaaaaa(aaaaaaaaaaaa)] [bbbbbbbbbbb(bbbbbbbbbbbb)] llvm-svn: 256343
* clang-format: Fix incorrect pointer detection.Daniel Jasper2015-12-232-1/+2
| | | | | | | | | | Before: return * this += 1; After: return *this += 1; llvm-svn: 256342
* [SCEV] Fix getLoopBackedgeTakenCountsSanjoy Das2015-12-231-17/+16
| | | | | | | | The way `getLoopBackedgeTakenCounts` is written right now isn't correct. It will try to compute and store the BE counts of a Loop #{child loop} number of times (which may be zero). llvm-svn: 256338
* [LIR] General refactoring to simplify code and the ease future code review.Chad Rosier2015-12-231-61/+113
| | | | | | | | | | Move several checks into isLegalStores. Also, delineate between those stores that are memset-able and those that are memcpy-able. http://reviews.llvm.org/D15683 Patch by Haicheng Wu <haicheng@codeaurora.org>! llvm-svn: 256336
* [MachineLICM] Fix handling of memoperandsPhilip Reames2015-12-232-2/+21
| | | | | | | | | | As far as I can tell, the correct interpretation of an empty memoperands list is that we didn't have sufficient room to store information about the MachineInstr, NOT that the MachineInstr doesn't access any particular bit of memory. This appears to be fairly consistent in a number of places, but I'm not 100% sure of this interpretation. I'd really appreciate someone more knowledgeable confirming my reading of the code. This patch fixes two latent bugs in MachineLICM - given the above assumption - and adds comments to document the meaning and required handling. I don't have test cases; these were noticed by inspection. Differential Revision: http://reviews.llvm.org/D15730 llvm-svn: 256335
* Place RW sections that go after relro to another memory page.Rafael Espindola2015-12-2314-171/+176
| | | | | | | | | | | | Before this patch sections that go after relro sequence were placed at the same memory page with relro ones. It caused segmentation fault on freebsd. Fixes PR25790. Patch by George Rimar with some tweaks by myself. llvm-svn: 256334
* Simplify memory management.Rafael Espindola2015-12-234-11/+6
| | | | | | We no longer need an explicit delete or a polymorphic destructor. llvm-svn: 256333
* [X86][AVX] Only shuffle the lower half of vectors if the upper half is undefinedSimon Pilgrim2015-12-237-123/+289
| | | | | | | | | | | | | | First step towards making better use of AVX's implicit zeroing of the upper half of a 256-bit vector by instructions that only act on the lower 128-bit vector - discussed on D14151. As well as the fact that 128-bit shuffle instructions are generally more capable, this can be performant for older CPUs with 128-bit ALUs (e.g. Jaguar, Sandy Bridge) that must treat 256-bit vectors as multiple micro-ops. Moved the similar subvector extraction shuffle combines from PerformShuffleCombine256 to lowerVectorShuffle as well. Note: I've avoided combining shuffles that reference elements from the upper halves of the input vectors - this may be reviewed in future work as well (AVX1 would probably always gain, but AVX2 does have some cross-lane shuffle instructions). Differential Revision: http://reviews.llvm.org/D15477 llvm-svn: 256332
* [LLDB] Fix Read/Write memory to be compatible with both endiansMohit K. Bhakkad2015-12-231-4/+2
| | | | | | | | Reviewers: tberghammer. Subscribers: jaydeep, bhushan, sagar, nitesh.jain,lldb-commits. Differential Revision: http://reviews.llvm.org/D15738 llvm-svn: 256331
* [OPENMP 4.5] Parsing/sema for 'depend(sink:vec)' clause in 'ordered' directive.Alexey Bataev2015-12-238-70/+262
| | | | | | OpenMP 4.5 adds 'depend(sink:vec)' in 'ordered' directive for doacross loop synchronization. Patch adds parsing and semantic analysis for this clause. llvm-svn: 256330
* [OperandBundles] Have GlobalsModRef play nice with operand bundlesDavid Majnemer2015-12-233-8/+17
| | | | | | | A call site's use of a Value might not correspond to an argument operand but to a bundle operand. llvm-svn: 256329
* [OperandBundles] Have TailCallElim play nice with operand bundlesDavid Majnemer2015-12-232-2/+12
| | | | | | | | | A call site's use of a Value might not correspond to an argument operand but to a bundle operand. This fixes PR25928. llvm-svn: 256328
* [OperandBundles] Have InstCombine play nice with operand bundlesDavid Majnemer2015-12-233-4/+42
| | | | | | | Don't assume a call's use corresponds to an argument operand, it might correspond to a bundle operand. llvm-svn: 256327
* [OperandBundles] Have DeadArgElim play nice with operand bundlesDavid Majnemer2015-12-233-4/+52
| | | | | | | A call site's use of a Value might not correspond to an argument operand but to a bundle operand. llvm-svn: 256326
* [libcxx] Fix LWG Issue #2367 - Fixing std::tuple and std::pair's default ↵Eric Fiselier2015-12-234-9/+189
| | | | | | | | | | | | | | constructors. Summary: This patch implements the solution for LWG Issue #2367. See http://cplusplus.github.io/LWG/lwg-active.html#2367 Reviewers: mclow.lists, EricWF Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D13750 llvm-svn: 256325
* AVX512BW: Enable packed word shift for 512bit vector. Enable lowering scalar ↵Igor Breger2015-12-2313-532/+1625
| | | | | | | | immidiate shift v64i8 .Fix predicate for AVX1/2 shifts. Differential Revision: http://reviews.llvm.org/D15713 llvm-svn: 256324
* Add new tests for throwing incomplete pointer typesEric Fiselier2015-12-231-18/+97
| | | | llvm-svn: 256323
* Fix PR25898 - Check for incomplete pointers types in can_catch(...)Eric Fiselier2015-12-232-17/+100
| | | | llvm-svn: 256322
* [Sema] Make an enum local to the only method that uses it. NFCCraig Topper2015-12-231-7/+5
| | | | llvm-svn: 256319
* [Sema] Use available enum types instead of integers. As one is used in a ↵Craig Topper2015-12-231-3/+2
| | | | | | switch, this makes the compiler ensure the switch is fully covered. NFC llvm-svn: 256318
* [WinEH] Don't visit the same catchswitch twiceDavid Majnemer2015-12-232-7/+70
| | | | | | | | | | | | | We visited the same catchswitch twice because it was both the child of another funclet and the predecessor of a cleanuppad. Instead, change the numbering algorithm to only recurse if the unwind destination of the inner funclet agrees with the unwind destination of the catchswitch. This fixes PR25926. llvm-svn: 256317
* Fix the last leak asan found in test/ELF.Rafael Espindola2015-12-232-2/+5
| | | | llvm-svn: 256316
* win: Pass /W4 in front of all the -wd flags.Nico Weber2015-12-231-1/+4
| | | | | | | | | | | This should fix many many -Wunused-parameter warnings in self-host builds on Windows after r255382. cl.exe doesn't care about the order of /W4 and /wd flags, but clang-cl currently does (just like -Wno-foo -Wall order matters for clang). We might want to change how clang-cl behaves in the future, but until then this change makes self-host builds much more silent. llvm-svn: 256315
* Fix build error: OMPT_SUPPORT=true was not tested after hinted lock changesJonathan Peyton2015-12-231-1/+8
| | | | | | | | | | | | | | | | | | | | Recent changes to support dynamic locks didn't consider the code compiled when OMPT_SUPPORT=true. As a result, the OMPT support was broken by recent changes to nested locks to support dynamic locks. For OMPT to work with dynamic locks, they need to provide a return code indicating whether a nested lock acquisition was the first or not. This patch moves the OMPT support for nested locks into the #else case when DYNAMIC locks were not used. New support is needed for dynamic locks. This patch fixes the build and leaves a placeholder where the missing OMPT callbacks can be added either the author of the OMPT support for locks, or the dynamic locking support. Patch by John Mellor-Crummey Differential Revision: http://reviews.llvm.org/D15656 llvm-svn: 256314
* Form reform for MCDwarf.Paul Robinson2015-12-236-19/+28
| | | | | | | | | MCDwarf emits a canned abbreviation table, but was not emitting proper forms for DWARF version 4, which is the default after r249655. Differential Revision: http://reviews.llvm.org/D15732 llvm-svn: 256313
* [GC] Make GCStrategy::isGCManagedPointer a type predicate not a value ↵Philip Reames2015-12-235-10/+10
| | | | | | | | | | | predicate [NFC] Reasons: 1) The existing form was a form of false generality. None of the implemented GCStrategies use anything other than a type. Its becoming more and more clear we're going to need some type of strong GC pointer in the type system and we shouldn't pretend otherwise at this point. 2) The API was awkward when applied to vectors-of-pointers. The old one could have been made to work, but calling isGCManagedPointer(Ty->getScalarType()) is much cleaner than the Value alternatives. 3) The rewriting implementation effectively assumes the type based predicate as well. We should be consistent. llvm-svn: 256312
* Fix another asan detected leak.Rafael Espindola2015-12-232-1/+2
| | | | llvm-svn: 256311
* Fix an asan found leak.Rafael Espindola2015-12-231-1/+3
| | | | | | I will make better use of std::unique_ptr in followup patch. llvm-svn: 256310
* Fix two asan found bugs:Rafael Espindola2015-12-233-0/+7
| | | | | | | We were leaking InputFile subclasses data. UndefinedElf was missing a classof. llvm-svn: 256309
* Unbreak LLVM_ENABLE_THREADS=OFF builds.Nico Weber2015-12-231-3/+19
| | | | llvm-svn: 256308
* XFAIL ubsan suppressions.cpp test on Windows for now.Nico Weber2015-12-231-0/+8
| | | | llvm-svn: 256307
* [WebAssembly] Add a TODO comment for a possible future optimization.Dan Gohman2015-12-231-1/+2
| | | | llvm-svn: 256306
* [RS4GC] Fix base pair printing for constants.Manuel Jacob2015-12-233-7/+14
| | | | | | | Previously, "%" + name of the value was printed for each derived and base pointer. This is correct for instructions, but wrong for e.g. globals. llvm-svn: 256305
* Provide a way to specify inliner's attribute compatibility and merging.Akira Hatanaka2015-12-229-39/+229
| | | | | | | | | | | | | | | | | | | | | This reapplies r256277 with two changes: - In emitFnAttrCompatCheck, change FuncName's type to std::string to fix a use-after-free bug. - Remove an unnecessary install-local target in lib/IR/Makefile. Original commit message for r252949: Provide a way to specify inliner's attribute compatibility and merging rules using table-gen. NFC. This commit adds new classes CompatRule and MergeRule to Attributes.td, which are used to generate code to check attribute compatibility and merge attributes of the caller and callee. rdar://problem/19836465 llvm-svn: 256304
* [BPI] Fix two potential divide-by-zero operations that are introduced in ↵Cong Hou2015-12-222-9/+20
| | | | | | r256263. llvm-svn: 256303
* Disable use list order on the gold plugin.Rafael Espindola2015-12-221-1/+1
| | | | | | | | | It turns out that his is *really* slow. With this change the link of clang with plugin-opt=emit-llvm goes from 41 to 26 seconds. We can add an option to enable it again if needed. llvm-svn: 256302
* [WebAssembly] Trim unneeded #includes. NFC.Dan Gohman2015-12-222-2/+0
| | | | llvm-svn: 256301
* [WebAssembly] Minor code simplification. NFC.Dan Gohman2015-12-221-1/+1
| | | | llvm-svn: 256300
* Add an OperandNamespace field to Target.td's Operand.Dan Gohman2015-12-222-0/+2
| | | | | | | | For targets to add their own operand types as needed, as advertised in Operand's comment, they need to be able to specify an alternate namespace for OperandType names too. This matches the RegisterOperand class. llvm-svn: 256299
OpenPOWER on IntegriCloud