summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Cleanup result_of tests and fix issues with the C++03 result_of.Eric Fiselier2015-06-134-68/+314
| | | | | | | | | | The two main fixes this patch contains are: - use __identity_t instead of common_type. common_type was used as an identity metafunction but the decay resulted in incorrect results. - Pointers to free functions were not counted as functions. Remove the pointer before checking if a type is a function. llvm-svn: 239668
* Remove warnings about old CMake optionsEric Fiselier2015-06-131-21/+0
| | | | llvm-svn: 239667
* Fix PR12999 - unordered_set::insert calls operator new when no insert occursEric Fiselier2015-06-132-2/+87
| | | | | | | | | | | | | | | | | | | | | | | Summary: when `unordered_set::insert(value_type&&)` was called it would be treated like `unordered_set::emplace(Args&&)` and it would allocate and construct a node before trying to insert it. This caused unnecessary allocations when the value was already in the set. This patch adds an overload to `__hash_table::__insert_unique` that specifically handles `value_type&&` more link `value_type const &`. This patch also adds a single unified insert function for values into `__hash_table` called `__insert_unique_value` that handles the cases for `__insert_unique(value_type&&)` and `__insert_unique(value_type const &)`. This patch fixes PR12999: http://llvm.org/bugs/show_bug.cgi?id=12999. Reviewers: mclow.lists, titus, danalbert Reviewed By: danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7570 llvm-svn: 239666
* Add `-verify-ignore-unexpected` option to ignore unexpected diagnostics in ↵Eric Fiselier2015-06-138-14/+207
| | | | | | | | | | | | | | | | | | | | | VerifyDiagnosticsConsumer Summary: The goal of this patch is to make `-verify` easier to use when testing libc++. The `notes` attached to compile error diagnostics are numerous and relatively unstable when they reference libc++ header internals. This patch allows libc++ to write stable compilation failure tests by allowing unexpected diagnostic messages to be ignored where they are not relevant. This patch adds a new CC1 flag called `-verify-ignore-unexpected`. `-verify-ignore-unexpected` tells `VerifyDiagnosticsConsumer` to ignore *all* unexpected diagnostic messages. `-verify-ignore-unexpected=<LevelList>` can be used to only ignore certain diagnostic levels. `<LevelList>` is a comma separated list of diagnostic levels to ignore. The supported levels are `note`, `remark`, `warning` and `error`. Reviewers: bogner, grosser, EricWF Reviewed By: EricWF Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D10138 llvm-svn: 239665
* [libcxx] Fix detection of __is_final.Eric Fiselier2015-06-138-49/+42
| | | | | | | | | | | | | | Summary: Currently we only enable the use of __is_final(...) with Clang. GCC also provides __is_final(...) since 4.7 in all standard modes. This patch creates the macro _LIBCPP_HAS_IS_FINAL to note the availability of `__is_final`. Reviewers: danalbert, mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D8795 llvm-svn: 239664
* [LIT] Fix failing LIT testsEric Fiselier2015-06-134-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | Summary: I spend some time trying to get the LIT test suite passing. Here are the changes that I needed to make on my machine. I made the following changes for the following reasons. 1. google-test.py: The Google test format now checks for "[ PASSED ] 1 test." to check if a test passes. 2. discovery.py: The output appears in a different order on my machine than it did in the test. 3. unittest-adaptor.py: The output appears in a different order on my machine than it did in the test. 4. The classname is now formed differently in `getJUnitXML(...)`. I'm not sure what is causing the output order to differ in discovery.py and unittest-adaptor.py. Does anybody have any thoughts? Reviewers: ddunbar, danalbert, jroelofs Reviewed By: jroelofs Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9864 llvm-svn: 239663
* [libcxx] Use __decltype instead of __typeof__Eric Fiselier2015-06-131-1/+16
| | | | | | | | | | | | | | | | | | Summary: Both clang and GCC provide C++11 decltype semantics as __decltype in c++03 mode. We should use this instead of __typeof__ when availble. GCC added __decltype in 4.6.0, and AFAIK clang provided __decltype ever since 3.3. Unfortunately `__has_builtin(__decltype)` doesn't work for clang so we need to check the compiler version instead. Reviewers: mclow.lists Reviewed By: mclow.lists Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D10426 llvm-svn: 239662
* AMDGPU: s/R600/AMDGPU/ in the MakefilesTom Stellard2015-06-135-7/+7
| | | | | | | | | Now the library names in the Makefiles match the library names in LLVMBuild.txt. This should hopefully fix the remaining bot failures. llvm-svn: 239661
* configure: Remove non-portable fall-through operator: ;&Tom Stellard2015-06-132-2/+2
| | | | | | This was added in r239657. llvm-svn: 239660
* Rename TargetSubtargetInfo::enablePostMachineScheduler() to ↵Matthias Braun2015-06-1311-15/+14
| | | | | | | | | | | | | | enablePostRAScheduler() r213101 changed the behaviour of this method to not only affect the PostMachineScheduler scheduler but also the PostRAScheduler scheduler, renaming should make this fact clear. Also document that the preferred way is to specify this in the scheduling model instead of overriding this method. Differential Revision: http://reviews.llvm.org/D10427 llvm-svn: 239659
* MachineLICM: Use TargetSchedModel instead of just itinerariesMatthias Braun2015-06-138-24/+27
| | | | | | | | | This will use Itinieraries if available, but will also work if just a MCSchedModel is available. Differential Revision: http://reviews.llvm.org/D10428 llvm-svn: 239658
* R600 -> AMDGPU renameTom Stellard2015-06-13552-60/+62
| | | | llvm-svn: 239657
* Revert r239213: "clang-cl: Implement /GL in terms of -flto."Hans Wennborg2015-06-134-9/+3
| | | | | | | Reverting until it's easier to use this in a real-world build, e.g. when the linker can handle it. llvm-svn: 239656
* Make __void_t unary and always provide it.Eric Fiselier2015-06-131-3/+1
| | | | llvm-svn: 239655
* LWG2442: call_once() shouldn't DECAY_COPY(). Patch from K-Ballo.Eric Fiselier2015-06-133-23/+79
| | | | | | | This patch fixes LWG issue 2422 by removing the DECAY_COPY from call once. The review can be found here: http://reviews.llvm.org/D10191 llvm-svn: 239654
* Enable __is_trivially* intrinsics for GCC 5.1Eric Fiselier2015-06-132-6/+11
| | | | | | | | | | | | Until GCC 5.1 the __is_trivially* intrinsics were not provided. Enable use of the builtins for GCC 5.1. Also enable Reference qualified member functions for GCC 4.9 and greater. This patch also defines _GNUC_VER to 0 when __GNUC__ is not defined because libc++ assumes _GNUC_VER is always defined. llvm-svn: 239653
* docs: grammar adjustments in clang manpageSaleem Abdulrasool2015-06-131-7/+7
| | | | | | | | Fix a few typos and run-on sentences in the clang POD documentation. Patch by Brian R. Gaeke! llvm-svn: 239652
* [CodeGen] Don't evaluate immediate inlineasm arguments using isICE().Ahmed Bougacha2015-06-132-1/+6
| | | | | | | | | | | Instead, just EvaluateAsInt(). Follow-up to r239549: rsmith points out that isICE() is expensive; seems like it's not the right concept anyway, as it fails on `static const' in C, and will actually trigger the assert below on: test/Sema/inline-asm-validate-x86.c llvm-svn: 239651
* Revert 239644.Matt Wala2015-06-131-3/+1
| | | | llvm-svn: 239650
* Refactor is_member_function_pointer to use is_function and not ↵Eric Fiselier2015-06-132-23/+53
| | | | | | | | | | __member_function_traits. Replacing the dependancy on __member_function_traits with is_function allows is_member_function_pointer to work more often. In particular it allows it to work when we don't have variadic templates but the function has an arity > 3. llvm-svn: 239649
* Prevent dependancy on libatomic when using GCC to provide <atomic>.Eric Fiselier2015-06-131-6/+8
| | | | | | | | | The __atomic_is_lock_free(...) function sometimes requires linkage to libatomic if it cannot be evaluated at compile time. Remove __c11_atomic_is_lock_free and use __atomic_is_lock_free(sizeof(Tp)) directly so that it can be evaluated at compile time. llvm-svn: 239648
* AArch64: map bare-metal arm64-macho triple to MachO MC layer.Tim Northover2015-06-123-2/+14
| | | | | | Far better than an assertion about expecting ELF. llvm-svn: 239647
* Fix returning error message in LLVMLinkModulesEli Bendersky2015-06-122-1/+43
| | | | | | | | | | | On error, the temporary output stream wouldn't be flushed and therefore the caller would see an empty error message. Patch by Antoine Pitrou Differential Revision: http://reviews.llvm.org/D10241 llvm-svn: 239646
* [Orc] Tidy up initialization based on review feedback for r239561 from dblaikie.Lang Hames2015-06-121-20/+19
| | | | | | NFC. llvm-svn: 239645
* [Scalarizer] Fix potential for stale data in Scattered across invocationsMatt Wala2015-06-121-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Scalarizer has two data structures that hold information about changes to the function, Gathered and Scattered. These are cleared in finish() at the end of runOnFunction() if finish() detects any changes to the function. However, finish() was checking for changes by only checking if Gathered was non-empty. The function visitStore() only modifies Scattered without touching Gathered. As a result, Scattered could have ended up having stale data if Scalarizer only scalarized store instructions. Since the data in Scattered is used during the execution of the pass, this introduced dangling pointer errors. The fix is to check whether both Scattered and Gathered are empty before deciding what to do in finish(). Reviewers: srhines Reviewed By: srhines Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10422 llvm-svn: 239644
* [CodeGen] Use IRBuilder to create llvm.lifetime intrinsics.Alexey Samsonov2015-06-122-11/+10
| | | | | | | | | | | | | | | | | | | | Summary: In addition to easier syntax, IRBuilder makes sure to set correct debug locations for newly added instructions (bitcast and llvm.lifetime itself). This restores the original behavior, which was modified by r234581 (reapplied as r235553). Extend one of the tests to check for debug locations. Test Plan: regression test suite Reviewers: aadg, dblaikie Subscribers: cfe-commits, majnemer Differential Revision: http://reviews.llvm.org/D10418 llvm-svn: 239643
* [Orc] Tidy up the CompileOnDemand layer based on commit review from dblaikie.Lang Hames2015-06-121-5/+6
| | | | | | NFC. llvm-svn: 239642
* [COFF] Spell the namespace correctly.Davide Italiano2015-06-122-2/+2
| | | | llvm-svn: 239641
* [Orc] Fix a bug in the CompileOnDemand layer where stub decls were not clonedLang Hames2015-06-123-15/+38
| | | | | | | | | | | into partitions. Also, add an option to clone stub definitions (not just decls) into partitions: these definitions could be inlined in some places to avoid the overhead of calling via the stub. Found by inspection - no test case yet, although I plan to add a unit test for this once the CompileOnDemand layer refactoring settles down. llvm-svn: 239640
* [ms] Don't try to delay lookup for failures in SFINAE context (PR23823)Hans Wennborg2015-06-122-1/+12
| | | | | | | | | | | | | The underlying problem in PR23823 already existed before my recent change in r239558, but that change made it worse (failing not only for undeclared symbols, but also failed overload resolution). This makes Clang not try to delay the lookup in SFINAE context. I assume no current code is relying on SFINAE working with lookups that need to be delayed, because that never seems to have worked. Differential Revision: http://reviews.llvm.org/D10417 llvm-svn: 239639
* [CGCall] Fix potential invalid iterator decrement in ↵Alexey Samsonov2015-06-121-5/+4
| | | | | | | | | | | findDominatingStoreToReturnValue. If llvm.lifetime.end turns out to be the first instruction in the last basic block, we can decrement the iterator twice, going past rend. At the moment, this can never happen because llvm.lifetime.end always goes immediately after bitcast, but relying on this is very brittle. llvm-svn: 239638
* R600/SI: Add assembler support for FLAT instructionsTom Stellard2015-06-127-90/+677
| | | | | | | | - Add glc, slc, and tfe operands to flat instructions - Add missing flat instructions - Fix the encoding of flat_load_dwordx3 and flat_store_dwordx3. llvm-svn: 239637
* Rangify several for loops in ValueEnumerator constructor.Yaron Keren2015-06-121-22/+18
| | | | llvm-svn: 239636
* Quote the user provided string in the warning message and updateEric Christopher2015-06-122-3/+3
| | | | | | tests accordingly. llvm-svn: 239635
* [Hexagon] Making intrinsic tests agnostic to register allocation. Narrowing ↵Colin LeMahieu2015-06-1214-760/+848
| | | | | | intrinsic parameters to appropriate width. llvm-svn: 239634
* Driver: only set -mlinker-version based on host if it's validTim Northover2015-06-121-1/+2
| | | | | | | | | | | | We were adding an extra "-mlinker-version" argument to the invocation based on a value inferred from "ld -v". This is set by the build systems to either a sane value or an empty string (e.g. for custom built ld), which we don't want to pass on. No test really possible because the value depends on both host system and how CMake was invoked. llvm-svn: 239633
* Wrap some long lines in LLVMBuild files. NFCDouglas Katzman2015-06-1211-16/+156
| | | | | | | As suggested by jroelofs in a prior review (D9752), it makes sense to generally prefer multi-line format. llvm-svn: 239632
* Add 'shave' processor name to TripleDouglas Katzman2015-06-122-1/+9
| | | | | | | | | | Based on ArchType, Clang's driver can select a non-Clang compiler. String parsing in Clang would have sufficed if it were only that, however this change anticipates true llvm support. Differential Revision: http://reviews.llvm.org/D10413 llvm-svn: 239631
* [builtins] Hide long double fp_test.h helpers if it's not fp128.Ahmed Bougacha2015-06-121-0/+12
| | | | | | | | | Like we do for the various __*tf* tests, check that long double is the 128bit type we expect directly in the header. The latter is now used by unrelated tests (__*hf* since r237161), and those tests will break for no reason if uint128_t doesn't exist, and long double isn't fp128. llvm-svn: 239630
* Refix a use of explicit pointer types in GEP constant foldingDavid Blaikie2015-06-121-4/+4
| | | | | | | | | | | | | | | | | In the glorious future of opaque pointer types, it won't be possible to retrieve the pointee type of a pointer type which is what's being done in this GEP loop - but the first iteration is always a pointer type and the loop doesn't care about that case, except whether or not the index is a constant. So pull that special case out before the loop and start at the second iteration (index 1) instead. Originally committed in r236670 and reverted with a test case in r239015. This change keeps the test case working while also avoiding depending on pointee types. llvm-svn: 239629
* Fix a typo in a comment in MemCpyOpt (test commit)Matt Wala2015-06-121-1/+1
| | | | llvm-svn: 239628
* Rangify two for loops in BitcodeReader.cpp.Yaron Keren2015-06-121-10/+5
| | | | llvm-svn: 239627
* Remove unnecessary MCExpr.h include from MCSymbol.hPete Cooper2015-06-121-1/+0
| | | | | | | MCSymbol.h already forwards declares MCExpr and only uses MCExpr* so doesn't need to include the header. llvm-svn: 239626
* [MS ABI] Lock-in the derived memptr rep. for base-to-derived conversionsDavid Majnemer2015-06-122-4/+15
| | | | | | | | | We would get this right in the case where an explicit cast was formed but not when we were performing an implicit conversion. This fixes PR23828. llvm-svn: 239625
* Remove a bunch of inline keywords from User. NFC.Pete Cooper2015-06-121-9/+9
| | | | | | This came up in the patch review for http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150608/281362.html. llvm-svn: 239624
* Move OperandList to be allocated prior to User for hung off subclasses.Pete Cooper2015-06-122-31/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For hung off uses, we need a Use* to tell use where the operands are. This was User::OperandList but we want to remove that to save space of all subclasses which aren't making use of 'hung off uses'. Hung off uses now allocate their own 'OperandList' Use* in the User::new which they call. getOperandList() now uses the hung off uses bit to work out where the Use* for the OperandList lives. If a User has hung off uses, then this bit tells them to go back a single Use* from the User* and use that value as the OperandList. If a User has no hung off uses, then we get the first operand by subtracting (NumOperands * sizeof(Use)) from the User this pointer. This saves a pointer from User and all subclasses. Given the average size of a subclass of User is 112 or 128 bytes, this saves around 7% of space With malloc tending to align to 16-bytes the real saving is typically more like 3.5%. On 'opt -O2 verify-uselistorder.lto.bc', peak memory usage prior to this change is 149MB and after is 143MB so the savings are around 2.5% of peak. Looking at some passes which allocate many Instructions and Values, parseIR drops from 54.25MB to 52.21MB while the Inliner calls to Instruction::clone() drops from 28.20MB to 27.05MB. Reviewed by Duncan Exon Smith. llvm-svn: 239623
* Added a version of User::new for hung off uses.Pete Cooper2015-06-123-10/+26
| | | | | | | | | | | | | | | | | There are now 2 versions of User::new. The first takes a size_t and is the current implementation for subclasses which need 0 or more Use's allocated for their operands. The new version takes no extra arguments to say that this subclass needs 'hung off uses'. The HungOffUses bool is now set in this version of User::new and we can assert in allocHungOffUses that we are allowed to have hung off uses. This ensures we call the correct version of User::new for subclasses which need hung off uses. A future commit will then allocate space for a single Use* which will be used in place of User::OperandList once that field has been removed. Reviewed by Duncan Exon Smith. llvm-svn: 239622
* Rename NumOperands to make it clear its managed by the User. NFC.Pete Cooper2015-06-128-40/+78
| | | | | | | | | | | | | | | | | | | | | This is to try make it very clear that subclasses shouldn't be changing the value directly. Now that OperandList for normal instructions is computed using the NumOperands, its critical that the NumOperands is accurate or we could compute the wrong offset to the first operand. I looked over all places which update NumOperands and they are all safe. Hung off use User's don't use NumOperands to compute the OperandList so they are safe to continue to manipulate it. The only other User which changed it was GlobalVariable which has an optional init list but always allocated space for a single Use. It was correctly setting NumOperands to 1 before setting an initializer, and setting it to 0 after clearing the init list, so the order was safe. Added some comments to that code to make sure that this isn't changed in future without being aware of this constraint. Reviewed by Duncan Exon Smith. llvm-svn: 239621
* Replace all accesses to User::OperandList with getter and setter methods. NFC.Pete Cooper2015-06-126-28/+50
| | | | | | | | | | We don't want anyone to access OperandList directly as its going to be removed and computed instead. This uses getter's and setter's instead in which we can later change the underlying implementation of OperandList. Reviewed by Duncan Exon Smith. llvm-svn: 239620
* Allow case-insensitive values for -mcpu for AArch64 target in line with GCC.Gabor Ballabas2015-06-123-3/+23
| | | | | | | GCC allows case-insensitive values for -mcpu, -march and -mtune options. This patch implements the same behaviour for the -mcpu option for the AArch64 target. llvm-svn: 239619
OpenPOWER on IntegriCloud