summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Add CSS style for FAQ questions, and restate FAQ questions as actual questions.Ted Kremenek2012-06-092-7/+22
| | | | llvm-svn: 158282
* Wordsmith a bit, and turn </h1> into </h4> when appropriate.Ted Kremenek2012-06-091-6/+8
| | | | llvm-svn: 158281
* Revert pair constructors back to using is_convertible instead of ↵Howard Hinnant2012-06-091-6/+6
| | | | | | is_constructible. This should pull things into alignment with the final draft. Fixes http://llvm.org/bugs/show_bug.cgi?id=13063#add_comment. llvm-svn: 158280
* Use XOP vpcom intrinsics in patterns instead of a target specific SDNode ↵Craig Topper2012-06-094-60/+13
| | | | | | type. Remove the custom lowering code that selected the SDNode type. llvm-svn: 158279
* Replace XOP vpcom intrinsics with fewer intrinsics that take the immediate ↵Craig Topper2012-06-094-431/+149
| | | | | | as an argument. llvm-svn: 158278
* [clang.py] Implement Cursor.is_static_methodGregory Szorc2012-06-092-0/+26
| | | | llvm-svn: 158277
* Hashing: Remove outdated comment. Support for reserved hash values was ↵Benjamin Kramer2012-06-091-4/+0
| | | | | | removed in r151865. llvm-svn: 158276
* Reorder ParsedTemplateArg's members to reduce padding on x86_64.Benjamin Kramer2012-06-091-5/+5
| | | | llvm-svn: 158275
* Disabling a spurious deprecation warning about using PathV1 from within the ↵Aaron Ballman2012-06-091-0/+10
| | | | | | PathV1 implementation file. llvm-svn: 158274
* Fixing a typo in the comments.Aaron Ballman2012-06-091-1/+1
| | | | llvm-svn: 158273
* Replace a char counting helper function with std::count.Benjamin Kramer2012-06-091-12/+2
| | | | | | No functionality change. llvm-svn: 158272
* Replace constant-sized BitVector with std::bitset.Benjamin Kramer2012-06-091-4/+3
| | | | llvm-svn: 158270
* Allocate the contents of DwarfDebug's StringMaps in a single big ↵Benjamin Kramer2012-06-092-5/+6
| | | | | | BumpPtrAllocator. llvm-svn: 158265
* Silence a gcc-4.6 warning: GCC fails to understand that secondReg and cmpOp2 areDuncan Sands2012-06-091-1/+1
| | | | | | correlated, and thinks that cmpOp2 may be used uninitialized. llvm-svn: 158263
* [Sanitizer] Use __libc_malloc/__libc_free instead of malloc/free inside ↵Alexey Samsonov2012-06-091-3/+12
| | | | | | internal allocator on Linux (important for TSan) llvm-svn: 158261
* [TSan] use efficient real_memcpy inside runtimeAlexey Samsonov2012-06-099-12/+17
| | | | llvm-svn: 158260
* Enable tail merging on PPC.Hal Finkel2012-06-092-12/+6
| | | | | | | | | | | | | | | | | | | | | | | | Tail merging had been disabled on PPC because it would disturb bundling decisions made during pre-RA scheduling on the 970 cores. Now, however, all bundling decisions are made during post-RA scheduling, and tail merging is generally beneficial (the average test-suite speedup is insignificantly positive). Largest test-suite speedups: MultiSource/Benchmarks/mediabench/gsm/toast/toast - 30% MultiSource/Benchmarks/BitBench/uuencode/uuencode - 23% SingleSource/Benchmarks/Shootout-C++/ary - 21% SingleSource/Benchmarks/Stanford/Queens - 17% Largest slowdowns: MultiSource/Benchmarks/MiBench/security-sha/security-sha - 24% MultiSource/Benchmarks/McCat/03-testtrie/testtrie - 22% MultiSource/Applications/JM/ldecod/ldecod - 14% MultiSource/Benchmarks/mediabench/g721/g721encode/encode - 9% This is improved by using full (instead of just critical) anti-dependency breaking, but doing so still causes miscompiles and so cannot yet be enabled by default. llvm-svn: 158259
* [libclang] When doing the cursor visitation make sure declarationsArgyrios Kyrtzidis2012-06-094-1/+70
| | | | | | | | | | | | | | | in the same line do not override getting a cursor for the previous declaration. e.g: int x, y; @synthesize prop1, prop2; pointing at 'x'/'prop1' would give 'y'/'prop2' because their source ranges overlap. rdar://11361113 llvm-svn: 158258
* Register pressure: added getPressureAfterInstr.Andrew Trick2012-06-092-33/+104
| | | | llvm-svn: 158256
* Sketch a LiveRegMatrix analysis pass.Jakob Stoklund Olesen2012-06-094-0/+297
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The LiveRegMatrix represents the live range of assigned virtual registers in a Live interval union per register unit. This is not fundamentally different from the interference tracking in RegAllocBase that both RABasic and RAGreedy use. The important differences are: - LiveRegMatrix tracks interference per register unit instead of per physical register. This makes interference checks cheaper and assignments slightly more expensive. For example, the ARM D7 reigster has 24 aliases, so we would check 24 physregs before assigning to one. With unit-based interference, we check 2 units before assigning to 2 units. - LiveRegMatrix caches regmask interference checks. That is currently duplicated functionality in RABasic and RAGreedy. - LiveRegMatrix is a pass which makes it possible to insert target-dependent passes between register allocation and rewriting. Such passes could tweak the register assignments with interference checking support from LiveRegMatrix. Eventually, RABasic and RAGreedy will be switched to LiveRegMatrix. llvm-svn: 158255
* [analyzer] FAQ page fixupAnna Zaks2012-06-091-1/+1
| | | | llvm-svn: 158254
* [analyzer] Add FAQ and How to Deal with Common False Positives pageAnna Zaks2012-06-094-0/+50
| | | | | | Still not linked in; comments and additions are very welcome. llvm-svn: 158253
* Test commitJack Carter2012-06-091-0/+1
| | | | llvm-svn: 158250
* Also compute MBB live-in lists in the new rewriter pass.Jakob Stoklund Olesen2012-06-096-89/+32
| | | | | | | | | This deduplicates some code from the optimizing register allocators, and it means that it is now possible to change the register allocators' solutions simply by editing the VirtRegMap between the register allocator pass and the rewriter. llvm-svn: 158249
* Convert comments to proper Doxygen comments.Dmitri Gribenko2012-06-099-38/+38
| | | | llvm-svn: 158248
* Removing strange "using" declarations form TargetInstrInfo.Andrew Trick2012-06-081-4/+0
| | | | | | I can't imagine why these were added. Trial and error. llvm-svn: 158247
* Incorporate suggestions from Jim, add "USING LLDB" and "FILES" sections.Jason Molenda2012-06-081-1/+34
| | | | llvm-svn: 158246
* [C++11 Compat] Fix breaking change in C++11 pair copyctor.Michael J. Spencer2012-06-081-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | While this code is valid C++98, it is not valid C++11. The problem can be reduced to: class MDNode; class DIType { operator MDNode*() const {return 0;} }; class WeakVH { WeakVH(MDNode*) {} }; int main() { DIType di; std::pair<void*, WeakVH> p(std::make_pair((void*)0, di))); } This was not detected by any of the bots we have because they either compile C++98 with libstdc++ (which allows it), or C++11 with libc++ (which incorrectly allows it). I ran into the problem when compiling with VS 2012 RC. Thanks to Richard for explaining the issue. llvm-svn: 158245
* Reintroduce VirtRegRewriter.Jakob Stoklund Olesen2012-06-089-78/+126
| | | | | | | | | | | | | | | | | | OK, not really. We don't want to reintroduce the old rewriter hacks. This patch extracts virtual register rewriting as a separate pass that runs after the register allocator. This is possible now that CodeGen/Passes.cpp can configure the full optimizing register allocator pipeline. The rewriter pass uses register assignments in VirtRegMap to rewrite virtual registers to physical registers, and it inserts kill flags based on live intervals. These finalization steps are the same for the optimizing register allocators: RABasic, RAGreedy, and PBQP. llvm-svn: 158244
* Correct method name in comment: from LexRawToken to LexFromRawLexer, accordingDmitri Gribenko2012-06-082-6/+6
| | | | | | to a change done long ago in r57393. llvm-svn: 158243
* Don't run RAFast in the optimizing regalloc pipeline.Jakob Stoklund Olesen2012-06-0823-24/+24
| | | | | | | | | | | The fast register allocator is not supposed to work in the optimizing pipeline. It doesn't make sense to compute live intervals, run full copy coalescing, and then run RAFast. Fast register allocation in the optimizing pipeline is better done by RABasic. llvm-svn: 158242
* Convert comments to proper Doxygen comments.Dmitri Gribenko2012-06-087-23/+23
| | | | llvm-svn: 158241
* Change the Mutex::Locker class so that it takes the Mutex object and locks ↵Jim Ingham2012-06-087-119/+127
| | | | | | | | | | | | | | it, rather than being given the pthread_mutex_t from the Mutex and locks that. That allows us to track ownership of the Mutex better. Used this to switch the LLDB_CONFIGURATION_DEBUG enabled assert when we can't get the gdb-remote sequence mutex to assert when the thread that had the mutex releases it. This is generally more useful information than saying just who failed to get it (since the code that had it locked often had released it by the time the assert fired.) llvm-svn: 158240
* Warn in ObjC++ when an 'auto' variable deduces type 'id'.Jordan Rose2012-06-083-1/+37
| | | | | | | | | | | | | | | | | | | | This could happen for cases like this: - (NSArray *)getAllNames:(NSArray *)images { NSMutableArray *results = [NSMutableArray array]; for (auto img in images) { [results addObject:img.name]; } return results; } Here the property access will fail because 'img' has type 'id', rather than, say, NSImage. This warning will not fire in templated code, since the 'id' could have come from a template parameter. llvm-svn: 158239
* Add a test for r158229 (overlapping fixits). This was PR10696!Jordan Rose2012-06-081-0/+13
| | | | llvm-svn: 158238
* canonicalize:Nuno Lopes2012-06-082-4/+29
| | | | | | | | | | | | | | -%a + 42 into 42 - %a previously we were emitting: -(%a + 42) This fixes the infinite loop in PR12338. The generated code is still not perfect, though. Will work on that next llvm-svn: 158237
* Minor fixes for ARM/iOS targets:Sean Callanan2012-06-082-0/+17
| | | | | | | | | | - On iOS, we select the "apcs-gnu" ABI to match what libraries expect. - Literals are now allocated at their preferred alignment, eliminating many alignment crashes. llvm-svn: 158236
* Make raw & parsed commands subclasses of CommandObject rather than having ↵Jim Ingham2012-06-0847-6360/+5479
| | | | | | | | | | | | | | | | the raw version implement an Execute which was never going to get run and another ExecuteRawCommandString. Took the knowledge of how to prepare raw & parsed commands out of CommandInterpreter and put it in CommandObject where it belongs. Also took all the cases where there were the subcommands of Multiword commands declared in the .h file for the overall command and moved them into the .cpp file. Made the CommandObject flags work for raw as well as parsed commands. Made "expr" use the flags so that it requires you to be paused to run "expr". llvm-svn: 158235
* Start implementing pre-ra if-converter: using speculation and selects to ↵Evan Cheng2012-06-081-6/+15
| | | | | | eliminate branches. llvm-svn: 158234
* TargetInstrInfo hooks implemented in codegen should be declared pure virtual.Andrew Trick2012-06-082-19/+39
| | | | llvm-svn: 158233
* Add a test case for r158222.Johnny Chen2012-06-081-0/+27
| | | | llvm-svn: 158232
* PR13051: Only suggest the 'template' and 'operator' keywords when performingRichard Smith2012-06-082-2/+24
| | | | | | typo-correction after a scope specifier. llvm-svn: 158231
* Disallow using ObjC literals in direct comparisons (== and friends).Jordan Rose2012-06-085-9/+266
| | | | | | | | | | | | | | | Objective-C literals conceptually always create new objects, but may be optimized by the compiler or runtime (constant folding, singletons, etc). Comparing addresses of these objects is relying on this optimization behavior, which is really an implementation detail. In the case of == and !=, offer a fixit to a call to -isEqual:, if the method is available. This fixit is directly on the error so that it is automatically applied. Most of the time, this is really a newbie mistake, hence the fixit. llvm-svn: 158230
* If fixits appear to overlap, move the second one over in the output.Jordan Rose2012-06-081-6/+14
| | | | | | | | This occurs when you have two insertions and the first one is so long that the second fixit's column is before the first fixit ends. The edits themselves don't actually overlap, but our command-line preview does. llvm-svn: 158229
* PR13051: If a constructor is explicitly defaulted, it isn't marked as beingRichard Smith2012-06-086-7/+85
| | | | | | | | | | | | constexpr until we get to the end of the class definition. When that happens, be sure to remember that the class actually does have a constexpr constructor. This is a stopgap solution, which still doesn't cover the case of a class with multiple copy constructors (only some of which are constexpr). We should be performing constructor lookup when implicitly defining a constructor in order to determine whether all constructors it invokes are constexpr. llvm-svn: 158228
* Reapply commit 158073 with a fix (the testcase was already committed). TheDuncan Sands2012-06-081-123/+120
| | | | | | | | | | | | | | | | | | problem was that by moving instructions around inside the function, the pass could accidentally move the iterator being used to advance over the function too. Fix this by only processing the instruction equal to the iterator, and leaving processing of instructions that might not be equal to the iterator to later (later = after traversing the basic block; it could also wait until after traversing the entire function, but this might make the sets quite big). Original commit message: Grab-bag of reassociate tweaks. Unify handling of dead instructions and instructions to reoptimize. Exploit this to more systematically eliminate dead instructions (this isn't very useful in practice but is convenient for analysing some testcase I am working on). No need for WeakVH any more: use an AssertingVH instead. llvm-svn: 158226
* Remove a commented out variable declaration. This was originally a debuggingRichard Trieu2012-06-081-1/+0
| | | | | | variable which wasn't removed when the original patch was committed. llvm-svn: 158225
* Remove the TODO statement in the PPC README re: CTR loopsHal Finkel2012-06-081-1/+0
| | | | | | | As Chris points out, this can now be removed! TODO: check if the associated section on viterbi's inner loop can also be removed. llvm-svn: 158224
* Enable PPC CTR loop formation by default.Hal Finkel2012-06-084-13/+11
| | | | | | | | | | | | | | | | | | | | | | Thanks to Jakob's help, this now causes no new test suite failures! Over the entire test suite, this gives an average 1% speedup. The largest speedups are: SingleSource/Benchmarks/Misc/pi - 108% SingleSource/Benchmarks/CoyoteBench/lpbench - 54% MultiSource/Benchmarks/Prolangs-C/unix-smail/unix-smail - 50% SingleSource/Benchmarks/Shootout/ary3 - 32% SingleSource/Benchmarks/Shootout-C++/matrix - 30% The largest slowdowns are: MultiSource/Benchmarks/mediabench/gsm/toast/toast - -30% MultiSource/Benchmarks/Prolangs-C/bison/mybison - -25% MultiSource/Benchmarks/BitBench/uuencode/uuencode - -22% MultiSource/Applications/d/make_dparser - -14% SingleSource/Benchmarks/Shootout-C++/ary - -13% In light of these slowdowns, additional profiling work is obviously needed! llvm-svn: 158223
* rdar://problem/11487457Johnny Chen2012-06-081-1/+2
| | | | | | | Previous fix to add convenience registers for x86_64 did not take the 'process attach' scenario into account. This patch fixes that. llvm-svn: 158222
OpenPOWER on IntegriCloud