summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [SROA] Use the original load name with the SROA-prefixed IRB rather thanChandler Carruth2014-02-251-2/+2
| | | | | | | | just "load". This helps avoid pointless de-duping with order-sensitive numbers as we already have unique names from the original load. It also makes the resulting IR quite a bit easier to read. llvm-svn: 202140
* [SROA] Thread the ability to add a pointer-specific name prefix throughChandler Carruth2014-02-251-21/+53
| | | | | | | | | | | | | | | | | | | | | | | | the pointer adjustment code. This is the primary code path that creates totally new instructions in SROA and being able to lump them based on the pointer value's name for which they were created causes *significantly* fewer name collisions and general noise in the debug output. This is particularly significant because it is making it much harder to track down instability in the output of SROA, as name de-duplication is a totally harmless form of instability that gets in the way of seeing real problems. The new fancy naming scheme tries to dig out the root "pre-SROA" name for pointer values and associate that all the way through the pointer formation instructions. Digging out the root is important to prevent the multiple iterative rounds of SROA from just layering too much cruft on top of cruft here. We already track the layers of SROAs iteration in the alloca name prefix. We don't need to duplicate it here. Should have no functionality change, and shouldn't have any really measurable impact on NDEBUG builds, as most of the complex logic is debug-only. llvm-svn: 202139
* AArch64 NEON: add 64-bit scalar intrinsics for _f64 mla/mls etc.Tim Northover2014-02-252-3/+36
| | | | | | | These seem to be supported by GCC, and do make sense architecturally so we should probably have them. llvm-svn: 202138
* ARM NEON: add _f16 support to a couple of vector-shuffling intrinsics.Tim Northover2014-02-253-7/+39
| | | | llvm-svn: 202137
* [SROA] Rather than copying the logic for building a name prefix into theChandler Carruth2014-02-251-3/+3
| | | | | | | PHI-pointer builder, just copy the builder and clobber the obvious fields. llvm-svn: 202136
* [SROA] Simplify some of the logic to dig out the old pointer value byChandler Carruth2014-02-251-14/+10
| | | | | | | | | using OldPtr more heavily. Lots of this code was written before the rewriter had an OldPtr member setup ahead of time. There are already asserts in place that should ensure this doesn't change any functionality. llvm-svn: 202135
* [SROA] Adjust to new clang-format style.Chandler Carruth2014-02-251-2/+2
| | | | llvm-svn: 202134
* IRGen: Remove a stale commentDavid Majnemer2014-02-251-1/+1
| | | | | | | This comment survived the transition from ForceInline to InlineAlways, fix it. llvm-svn: 202133
* [sanitizer] support pthread_rwlock_rd* in deadlock detectorKostya Serebryany2014-02-253-34/+79
| | | | llvm-svn: 202132
* Attr: Remove ForceInlineDavid Majnemer2014-02-255-16/+5
| | | | | | | | | | The __forceinline keyword's semantics are now recast as AlwaysInline and the kw___forceinline token has its language mode set for KEYMS. This preserves the semantics of the previous implementation but with less duplication of code. llvm-svn: 202131
* Reuse constants for COFF string table entry offsetsNico Rieck2014-02-251-7/+9
| | | | llvm-svn: 202130
* [SROA] Fix a *glaring* bug in r202091: you have to actually *write*Chandler Carruth2014-02-251-0/+2
| | | | | | | | | | | | | | the break statement, not just think it to yourself.... No idea how this worked at all, much less survived most bots, my bootstrap, and some bot bootstraps! The Polly one didn't survive, and this was filed as PR18959. I don't have a reduced test case and honestly I'm not seeing the need. What we probably need here are better asserts / debug-build behavior in SmallPtrSet so that this madness doesn't make it so far. llvm-svn: 202129
* [sanitizer] partially support pthread_rwlock_* (no rd* form yet)Kostya Serebryany2014-02-253-24/+43
| | | | llvm-svn: 202128
* Disable old JIT unittests for AARch64Renato Golin2014-02-253-5/+7
| | | | llvm-svn: 202127
* Ignore old JIT tests in AARch64 - CMake styleRenato Golin2014-02-251-0/+4
| | | | llvm-svn: 202126
* Add aarch64 to config.guessRenato Golin2014-02-251-0/+3
| | | | llvm-svn: 202125
* [asan] Fix for size_t in Asan's new and delete operators on x64 FreeBSD in ↵Kostya Serebryany2014-02-251-0/+9
| | | | | | 32-bit mode, only for FreeBSD <= 9.2; patch by Viktor Kutuzov llvm-svn: 202124
* [tsan] add deadlock detector tests for pthread_spin_lockKostya Serebryany2014-02-251-15/+39
| | | | llvm-svn: 202123
* Enable UBSan on FreeBSD. Patch by Viktor Kutuzov.Alexey Samsonov2014-02-251-3/+3
| | | | llvm-svn: 202122
* AttributeReference: Document __single_inhertiance, __multiple_inheritance, ↵David Majnemer2014-02-253-968/+1068
| | | | | | | | | | | __virtual_inheritance Add documentation for these attributes, it includes: - Motivation for their existence. - Examples on how to use them. - Examples on how to misuse them. llvm-svn: 202121
* [sanitizer] add support for try_lock in deadlock detectorKostya Serebryany2014-02-256-12/+95
| | | | llvm-svn: 202120
* Silence GCC warningAlexey Samsonov2014-02-251-1/+1
| | | | llvm-svn: 202119
* [sanitizer] fix epoch handling in deadlock detector (before the fix, we ↵Kostya Serebryany2014-02-253-20/+60
| | | | | | could have had edges from locks in the previous epoch to locks in the current epoch) llvm-svn: 202118
* Modules: Fix malformed reStructuredTextDavid Majnemer2014-02-251-1/+1
| | | | llvm-svn: 202117
* Fix typo in the td source tooAlp Toker2014-02-251-1/+1
| | | | | | r202112 fixed the generated output which will hopefully go away soon. llvm-svn: 202116
* Remove dead assignment reported by Gautier DI FOLCO.Ted Kremenek2014-02-251-1/+0
| | | | llvm-svn: 202115
* Remove the FormatSecurity diagnostic group from the FormatNonLiteral warning ↵Ted Kremenek2014-02-251-1/+1
| | | | | | | | | | | group. The FormatSecurity warning group does not need to be a sub-group of the FormatNonLiteral group. Patch by Zach Davis! llvm-svn: 202114
* [COFF] Refactor .drectve section handling. No functionality change.Rui Ueyama2014-02-251-7/+18
| | | | llvm-svn: 202113
* AttributeReference: Fix a typoDavid Majnemer2014-02-251-1/+1
| | | | llvm-svn: 202112
* [LinkerScript] OUTPUT_FORMAT: Parse Quoted StringsShankar Easwaran2014-02-254-11/+79
| | | | llvm-svn: 202111
* Allow debugserver to detach from the target if the connection is Jim Ingham2014-02-255-7/+43
| | | | | | unexpectedly closed. llvm-svn: 202110
* Allow multi-component paths in VFS file nodesBen Langmuir2014-02-252-20/+92
| | | | | | | | | | | | | | | | This allows the 'name' field to contain a path, like { 'type': 'directory', 'name': '/path/to/dir', 'contents': [ ... ] } which not only simplifies reading and writing these files (for humans), but makes it possible to easily modify locations via textual replacement, which would not have worked in the old scheme. E.g. sed s:<ROOT>:<NEW ROOT> llvm-svn: 202109
* Fix typosAlp Toker2014-02-256-17/+17
| | | | llvm-svn: 202108
* Fix typosAlp Toker2014-02-254-6/+6
| | | | llvm-svn: 202107
* [SROA] Add a debugging tool which shuffles the slices sequence prior toChandler Carruth2014-02-251-0/+19
| | | | | | | | | | | | | sorting it. This helps uncover latent reliance on the original ordering which aren't guaranteed to be preserved by std::sort (but often are), and which are based on the use-def chain orderings which also aren't (technically) guaranteed. Only available in C++11 debug builds, and behind a flag to prevent noise at the moment, but this is generally useful so figured I'd put it in the tree rather than keeping it out-of-tree. llvm-svn: 202106
* [libclang] Introduce libclang APIs for creating a buffer with a JSON virtual ↵Argyrios Kyrtzidis2014-02-256-40/+399
| | | | | | | | | | file overlay description. The current API only supports adding 'virtual file path' -> 'real file path' mappings. rdar://15986708 llvm-svn: 202105
* [libclang] Include "BuildSystem.h" along with "Index.h"Argyrios Kyrtzidis2014-02-252-3/+4
| | | | llvm-svn: 202104
* [SROA] Use a more direct way of determining whether we are processingChandler Carruth2014-02-251-2/+3
| | | | | | | | | | | | | | | | | | the destination operand or source operand of a memmove. It so happens that it was impossible for SROA to try to rewrite self-memmove where the operands are *identical*, because either such a think is volatile (and we don't rewrite) or it is non-volatile, and we don't even register it as a use of the alloca. However, making the 'IsDest' test *rely* on this subtle fact is... Very confusing for the reader. We should use the direct and readily available test of the Use* which gives us concrete information about which operand is being rewritten. No functionality changed, I hope! ;] llvm-svn: 202103
* Add some convenience accessors for the underlying Use of an operand.Chandler Carruth2014-02-252-0/+17
| | | | | | | | | These complement many of the existing accessors and make it significantly easier to write code which needs to poke at the underlying Use without hard coding the operand number at which it resides for a particular instruction. No functionality changed of course. llvm-svn: 202102
* [test] use llvm-config to drive testing in assert mode/debug modeShankar Easwaran2014-02-252-9/+14
| | | | llvm-svn: 202101
* [LinkerScript] parse OUTPUT_ARCH.Shankar Easwaran2014-02-253-10/+63
| | | | llvm-svn: 202100
* AST: Simplify CharUnits::alignmentAtOffsetDavid Majnemer2014-02-251-6/+1
| | | | | | | CharUnits::alignmentAtOffset is equivalent to llvm::MinAlign but slightly less efficient. Use it's implementation instead. llvm-svn: 202099
* IRGen: Simplify alignment calculation in setBitFieldInfoDavid Majnemer2014-02-251-4/+2
| | | | | | | | | Take advantage of CharUnits::alignmentAtOffset instead of calculating it by hand. Differential Revision: http://llvm-reviews.chandlerc.com/D2862 llvm-svn: 202098
* MS ABI: Return sret parameters when using inallocaReid Kleckner2014-02-254-4/+39
| | | | | | | | Previously the X86 backend would look for the sret attribute and handle this for us. inalloca takes that all away, so we have to do the return ourselves now. llvm-svn: 202097
* Indent this continued line.Nick Lewycky2014-02-251-4/+4
| | | | llvm-svn: 202096
* Silence -Wdeprecated-register warnings with clangAlp Toker2014-02-251-2/+2
| | | | llvm-svn: 202095
* clang/test/Preprocessor/init.c: Split conditions to win32 and non-win32.NAKAMURA Takumi2014-02-251-1/+5
| | | | | FIXME: Implement and check x86_64-cygwin. llvm-svn: 202094
* Suppress clang/test/Driver/clang_f_opts.c for targeting cygming since ↵NAKAMURA Takumi2014-02-251-0/+2
| | | | | | r202058 is incompatible to gcc driver. llvm-svn: 202093
* [SROA] Fix another instability in SROA with respect to the sliceChandler Carruth2014-02-252-66/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ordering. The fundamental problem that we're hitting here is that the use-def chain ordering is *itself* not a stable thing to be relying on in the rewriting for SROA. Further, we use a non-stable sort over the slices to arrange them based on the section of the alloca they're operating on. With a debugging STL implementation (or different implementations in stage2 and stage3) this can cause stage2 != stage3. The specific aspect of this problem fixed in this commit deals with the rewriting and load-speculation around PHIs and Selects. This, like many other aspects of the use-rewriting in SROA, is really part of the "strong SSA-formation" that is doen by SROA where it works very hard to canonicalize loads and stores in *just* the right way to satisfy the needs of mem2reg[1]. When we have a select (or a PHI) with 2 uses of the same alloca, we test that loads downstream of the select are speculatable around it twice. If only one of the operands to the select needs to be rewritten, then if we get lucky we rewrite that one first and the select is immediately speculatable. This can cause the order of operand visitation, and thus the order of slices to be rewritten, to change an alloca from promotable to non-promotable and vice versa. The fix is to defer all of the speculation until *after* the rewrite phase is done. Once we've rewritten everything, we can accurately test for whether speculation will work (once, instead of twice!) and the order ceases to matter. This also happens to simplify the other subtlety of speculation -- we need to *not* speculate anything unless the result of speculating will make the alloca fully promotable by mem2reg. I had a previous attempt at simplifying this, but it was still pretty horrible. There is actually already a *really* nice test case for this in basictest.ll, but on multiple STL implementations and inputs, we just got "lucky". Fortunately, the test case is very small and we can essentially build it in exactly the opposite way to get reasonable coverage in both directions even from normal STL implementations. llvm-svn: 202092
* llvm-dwarfdump: Support for debug_line.dwo section for file names for type ↵David Blaikie2014-02-249-15/+53
| | | | | | units under fission. llvm-svn: 202091
OpenPOWER on IntegriCloud