summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Objective-C ARC. First patch toward generating new APIsFariborz Jahanian2014-08-068-10/+49
| | | | | | | for Objective-C's array and dictionary literals. rdar://17554063. This is wip. llvm-svn: 214983
* Add a triple to this test to get the right IR manglingReid Kleckner2014-08-061-1/+1
| | | | llvm-svn: 214982
* Don't count inreg params when mangling fastcall functionsReid Kleckner2014-08-063-3/+5
| | | | | | This is consistent with MSVC. llvm-svn: 214981
* Round up the size of byval arguments to MinAlignReid Kleckner2014-08-062-0/+29
| | | | | | | | | | | | | | Otherwise we can end up with an argument frame size that is not a multiple of stack slot size, which is very awkward. This fixes PR20547, which was a bug in x86_64 Sys V vararg handling. However, it's much easier to test this with x86 callee-cleanup functions, which previously ended in "retl $6" instead of "retl $8". This does affect behavior of all backends, but it presumably fixes the same bug in all of them. llvm-svn: 214980
* UseListOrder: Use std::vectorDuncan P. N. Exon Smith2014-08-061-57/+1
| | | | | | | | | | | | | | I initially used a `SmallVector<>` for `UseListOrder::Shuffle`, which was a silly choice. When I realized my error I quickly rolled a custom data structure. This commit simplifies it to a `std::vector<>`. Now that I've had a chance to measure performance, this data structure isn't part of a bottleneck, so the additional complexity is unnecessary. This is part of PR5680. llvm-svn: 214979
* [AArch64] Add a few isTarget* API to AArch64 Subtarget.Chad Rosier2014-08-061-1/+4
| | | | llvm-svn: 214977
* FormatTokenLexer: Avoid non-static member initializer.NAKAMURA Takumi2014-08-061-2/+2
| | | | llvm-svn: 214976
* Add test case omitted in r214974.Chad Rosier2014-08-061-0/+5
| | | | llvm-svn: 214975
* [AArch64] Fix OS ABI flag for aarch64-linux-gnu target.Chad Rosier2014-08-061-2/+5
| | | | | | | | | For triple aarch64-linux-gnu we were incorrectly setting IRIX. For triple aarch64 we are correctly setting SYSV. Patch by Ana Pazos <apazos@codeaurora.org>. llvm-svn: 214974
* use register iterators that include self to reduce code duplication in ↵Sanjay Patel2014-08-061-25/+6
| | | | | | | | | | | | | | | | CriticalAntiDepBreaker This patch addresses 2 FIXME comments that I added to CriticalAntiDepBreaker while fixing PR20020. Initialize an MCSubRegIterator and an MCRegAliasIterator to include the self reg. Assuming that works as advertised, there should be functional difference with this patch, just less code. Also, remove the associated asserts - we're setting those values just before, so the asserts don't do anything meaningful. Differential Revision: http://reviews.llvm.org/D4566 llvm-svn: 214973
* [AVX512] Added load/store instructions to Register2Memory opcode tables.Robert Khasanov2014-08-062-2/+307
| | | | | | | | Added lowering tests for load/store. Reviewed by Elena Demikhovsky <elena.demikhovsky@intel.com> llvm-svn: 214972
* Fix missing favicon.ico warning (Sphinx 1.2.2). The comments next toDan Liew2014-08-061-4/+7
| | | | | | | | | | ``html_favicon`` seem to conflict with [what it in the sphinx docs](http://sphinx-doc.org/config.html#confval-html_favicon). So I've copied the comments from there to conf.py and changed its value appropriately to remove the missing favicon.ico warning. llvm-svn: 214971
* Remove unnecessary semicolon.Manuel Klimek2014-08-061-1/+1
| | | | llvm-svn: 214970
* clang-format: Correct SBPO_Always-behavior after function-like keywordsDaniel Jasper2014-08-063-1/+35
| | | | | | | | | | | | | | | | | Before: auto f (int x) -> decltype(x) { return sizeof(x); } int g () noexcept(someCall ()); static_assert(sizeof(char) == 1, "Your compiler is broken"); After: auto f (int x) -> decltype (x) { return sizeof (x); } int g () noexcept (someCall ()); static_assert (sizeof (char) == 1, "Your compiler is broken"); This fixes llvm.org/PR20559. Patch by Roman Kashitsyn, thank you! llvm-svn: 214969
* Fix sphinx warning.Dan Liew2014-08-061-1/+1
| | | | llvm-svn: 214968
* Fix sphinx warning.Dan Liew2014-08-061-1/+1
| | | | llvm-svn: 214967
* clang-format: Add special comments to disable formatting.Daniel Jasper2014-08-062-0/+20
| | | | | | | | | | | | | | | | With this patch: int ThisWillBeFormatted; // clang-format off int ThisWontBeFormatted; // clang-format on int Formatted; This is for regions where a significantly nicer code layout can be found knowing the content of the code. This fixes llvm.org/PR20463. llvm-svn: 214966
* [AArch64] Add a testcase for r214957.James Molloy2014-08-062-1/+19
| | | | llvm-svn: 214965
* clang-format: Fix indentation in multi-line placement new.Daniel Jasper2014-08-062-0/+6
| | | | | | | | | | | | | | Before: auto aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = new (aaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaa)) typename aaaaaaaaaaaaaaaaaaaaaaaa(); After: auto aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = new (aaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaaaa)) typename aaaaaaaaaaaaaaaaaaaaaaaa(); llvm-svn: 214964
* Add a new option -run-slp-after-loop-vectorization.James Molloy2014-08-061-15/+44
| | | | | | This swaps the order of the loop vectorizer and the SLP/BB vectorizers. It is disabled by default so we can do performance testing - ideally we want to change to having the loop vectorizer running first, and the SLP vectorizer using its leftovers instead of the other way around. llvm-svn: 214963
* Fix modelling of non-lifetime-extended temporary destructors in the analyzer.Manuel Klimek2014-08-068-425/+715
| | | | | | | | | | | | | | | | | | | 1. Changes to the CFG: When creating the CFG for temporary destructors, we create a structure that mirrors the branch structure of the conditionally executed temporary constructors in a full expression. The branches we create use a CXXBindTemporaryExpr as terminator which corresponds to the temporary constructor which must have been executed to enter the destruction branch. 2. Changes to the Analyzer: When we visit a CXXBindTemporaryExpr we mark the CXXBindTemporaryExpr as executed in the state; when we reach a branch that contains the corresponding CXXBindTemporaryExpr as terminator, we branch out depending on whether the corresponding CXXBindTemporaryExpr was marked as executed. llvm-svn: 214962
* Rename ChecksFilter to GlobList, as there's nothing specific to checks in it.Alexander Kornienko2014-08-067-76/+76
| | | | | | | | | | | | | | | | | | Summary: Rename ChecksFilter to GlobList, as there's nothing specific to checks in it. It's a rather generic way to represent sets of strings (or patterns), so it may be used for something else in ClangTidy. The new name would not look strange when used to filter other entities. Reviewers: klimek Reviewed By: klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4806 llvm-svn: 214961
* Add decorators for tests failing to build on the lab.llvm.org FreeBSD buildbotEd Maste2014-08-065-0/+5
| | | | | | llvm.org/pr20548 llvm-svn: 214960
* ARM: do not generate BLX instructions on Cortex-M CPUs.Tim Northover2014-08-067-12/+35
| | | | | | | | | Particularly on MachO, we were generating "blx _dest" instructions on M-class CPUs, which don't actually exist. They happen to get fixed up by the linker into valid "bl _dest" instructions (which is why such a massive issue has remained largely undetected), but we shouldn't rely on that. llvm-svn: 214959
* ARM-MachO: materialize callee address correctly on v4t.Tim Northover2014-08-062-1/+25
| | | | llvm-svn: 214958
* [AArch64] Conditional selects are expensive on out-of-order cores.James Molloy2014-08-061-0/+4
| | | | | | | | Specifically Cortex-A57. This probably applies to Cyclone too but I haven't enabled it for that as I can't test it. This gives ~4% improvement on SPEC 174.vpr, and ~1% in 471.omnetpp. llvm-svn: 214957
* check_clang_tidy_fix.sh: added comments, use set -o errexit instead of '|| ↵Alexander Kornienko2014-08-061-5/+14
| | | | | | exit $?' on each command llvm-svn: 214956
* Segregate FreeBSD-specific parts from sanitizer_procmaps_linux.ccViktor Kutuzov2014-08-065-218/+272
| | | | | | Differential Revision: http://reviews.llvm.org/D4555 llvm-svn: 214955
* [x86] Fix two independent miscompiles in the process of getting the sameChandler Carruth2014-08-062-71/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | test case to actually generate correct code. The primary miscompile fixed here is that we weren't correctly handling in-place elements in one half of a single-input v8i16 shuffle when moving a dword of elements from that half to the other half. Some times, we would clobber the in-place elements in forming the dword to move across halves. The fix to this involves forcibly marking the in-place inputs even when there is no need to gather them into a dword, and to much more carefully re-arrange the elements when grouping them into a dword to move across halves. With these two changes we would generate correct shuffles for the test case, but found another miscompile. There are also some random perturbations of the generated shuffle pattern in SSE2. It looks like a wash; more instructions in some cases fewer in others. The second miscompile would corrupt the results into nonsense. This is a buggy pattern in one of the added DAG combines. Mapping elements through a PSHUFD when pairing redundant half-shuffles is *much* harder than this code makes it out to be -- it requires reasoning about *all* of where the input is used in the PSHUFD, not just one part of where it is used. Plus, we can't combine a half shuffle *into* a PSHUFD but the code didn't guard against it. I think this was just a bad idea and I've just removed that aspect of the combine. No tests regress as a consequence so seems OK. llvm-svn: 214954
* [x86] Switch to a formulation of a for loop that is much more obviouslyChandler Carruth2014-08-061-3/+4
| | | | | | | | not corrupting the mask by mutating it more times than intended. No functionality changed (the results were non-overlapping so the old version "worked" but was non-obvious). llvm-svn: 214953
* [clang-tidy] forward arguments of the testing script to clang-tidy.Benjamin Kramer2014-08-061-1/+2
| | | | llvm-svn: 214952
* [X86] Fixes commit r214890 to match the posted patchAdam Nemet2014-08-063-5/+9
| | | | | | This was another fallout from my local rebase where something went wrong :( llvm-svn: 214951
* [Driver] Add missed include header.Simon Atanasyan2014-08-061-0/+2
| | | | llvm-svn: 214950
* [Driver] Move information about toolchain specific include directoriesSimon Atanasyan2014-08-062-17/+46
| | | | | | | | | | | | from the common driver code to the corresponding `MultilibSet` declarations. Now the `MultilibSet` can hold an optional callback function which is responsible to return a set of include directories specific for the toolchain. That allows to remove MIPS toolchain specific directories from `Linux::AddClangSystemIncludeArgs` method and simplify adding new directories in the future. llvm-svn: 214949
* [PECOFF] Exported symbols are dead-strip roots.Rui Ueyama2014-08-061-2/+7
| | | | llvm-svn: 214948
* MS ABI: Mangle lambdas which are given the same mangling numberDavid Majnemer2014-08-062-8/+20
| | | | | | | | It is possible for lambdas to get the same mangling number because they may exist in different mangling contexts. To handle this correctly, mangle the context into the name as well. llvm-svn: 214947
* When stepping, handle the case where the step leaves us withJim Ingham2014-08-066-6/+29
| | | | | | | | | | the same parent frame, but different current frame - e.g. when you step past a tail call exit from a function. Apply the same "avoid-no-debug" rules to this case as for a "step-in". <rdar://problem/16189225> llvm-svn: 214946
* Correct commentMatt Arsenault2014-08-061-1/+1
| | | | llvm-svn: 214945
* [dfsan] Try not to create too many additional basic blocks in functions whichPeter Collingbourne2014-08-062-20/+3059
| | | | | | | already have a large number of blocks. Works around a performance issue with the greedy register allocator. llvm-svn: 214944
* R600: Increase nearby load scheduling threshold.Matt Arsenault2014-08-062-39/+55
| | | | | | | | | This partially fixes weird looking load scheduling in memcpy test. The load clustering doesn't seem particularly smart, but this method seems to be partially deprecated so it might not be worth trying to fix. llvm-svn: 214943
* R600/SI: Implement areLoadsFromSameBasePtrMatt Arsenault2014-08-0616-70/+220
| | | | | | | | This currently has a noticable effect on the kernel argument loads. LDS and global loads are more problematic, I think because of how copies are currently inserted to ensure that the address is a VGPR. llvm-svn: 214942
* Probably should initialize that new ivar while I'm at it...Jim Ingham2014-08-061-0/+1
| | | | llvm-svn: 214941
* [X86][SchedModel] Fixed some wrong scheduling model found by code inspection.Quentin Colombet2014-08-062-25/+48
| | | | | | | | Source: Agner Fog's Instruction tables. Related to <rdar://problem/15607571> llvm-svn: 214940
* DebugInfo: Assert that any CU for which debug_loc lists are emitted, has at ↵David Blaikie2014-08-0637-37/+38
| | | | | | | | | | | | | | | | least one range. This was coming in weird debug info that had variables (and hence debug_locs) but was in GMLT mode (because it was missing the 13th field of the compile_unit metadata) so no ranges were constructed. We should always have at least one range for any CU with a debug_loc in it - because the range should cover the debug_loc. The assertion just ensures that the "!= 1" range case inside the subsequent loop doesn't get entered for the case where there are no ranges at all, which should never reach here in the first place. llvm-svn: 214939
* Add a variant of the CommandOverrideCallback that takes aJim Ingham2014-08-064-16/+29
| | | | | | | | | | | | | | CommandReturnObject. Otherwise, all the overridden command can do is say it overrode the command, not say what it did... Also removed the duplicate definition of CommandOverrideCallback from the private interfaces. Now to figure out how to get this through the SB API's... <rdar://problem/17911629> llvm-svn: 214938
* DebugInfo: Fix a bunch of tests that, owing to their compile_unit metadata ↵David Blaikie2014-08-054-47/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | not including a 13th field, had some subtle behavior. Without the 13th field, the "emission kind" field defaults to 0 (which is not equal to either of the values of the emission kind enum (1 == full debug info, 2 == line tables only)). In this particular instance, the comparison with "FullDebugInfo" was done when adding elements to the ranges list - so for these test cases no values were added to the ranges list. This got weirder when emitting debug_loc entries as the addresses should be relative to the range of the CU if the CU has only one range (the reasonable assumption is that if we're emitting debug_loc lists for a CU that CU has at least one range - but due to the above situation, it has zero) so the ranges were emitted relative to the start of the section rather than relative to the start of the CU's singular range. Fix these tests by accounting for the difference in the description of debug_loc entries (in some cases making the test ignorant to these differences, in others adding the extra label difference expression, etc) or the presence/absence of high/low_pc on the CU, and add the 13th field to their CUs to enable proper "full debug info" emission here. In a future commit I'll fix up a bunch of other test cases that are not so rigorously depending on this behavior, but still doing similarly weird things due to the missing 13th field. llvm-svn: 214937
* R600/SI: Add definitions for ds_read2st64_ / ds_write2st64_Matt Arsenault2014-08-051-3/+4
| | | | llvm-svn: 214936
* Remove trailing whitespacesRui Ueyama2014-08-051-3/+3
| | | | llvm-svn: 214935
* Fix typos in comments and docJF Bastien2014-08-055-6/+6
| | | | | | Committing http://reviews.llvm.org/D4798 for Robin Morisset (morisset@google.com) llvm-svn: 214934
* DebugInfo: Move the reference to the CU from the location list entry to the ↵David Blaikie2014-08-054-19/+14
| | | | | | | | | | list itself, since it is constant across an entire list. This simplifies construction and usage while making the data structure smaller. It was a holdover from the days when we didn't have a separate DebugLocList and all we had was a flat list of DebugLocEntries. llvm-svn: 214933
OpenPOWER on IntegriCloud