- Jul 19, 2012
-
-
Jim Grosbach authored
llvm-svn: 160463
-
- Jul 18, 2012
-
-
Jordan Rose authored
For a measure of safety, this conversion is only permitted if the stored pointer type can also be created from a const void *. llvm-svn: 160456
-
Manman Ren authored
Updated OptimizeCompare in peephole to remove redundant cmp against zero. We only remove Compare if CF and OF are not used. rdar://11855129 llvm-svn: 160454
-
Preston Gurd authored
when run on an Intel Atom processor. The failures have arisen due to changes elsewhere in the trunk over the past 8 weeks or so. These failures were not detected by the Atom buildbot because the CPU on the Atom buildbot was not being detected as an Atom CPU. The fix for this problem is in Host.cpp and X86Subtarget.cpp, but shall remain commented out until the current set of Atom test failures are fixed. Patch by Andy Zhang and Tyler Nowicki! llvm-svn: 160451
-
Victor Oliveira authored
llvm-svn: 160446
-
Chad Rosier authored
llvm-svn: 160445
-
Chandler Carruth authored
LiveIntervals due to the two-addr pass generating bogus MI code. The crux of the issue was a loop nesting problem. The intent of the code which attempts to transform instructions before converting them to two-addr form is to defer and reprocess any transformed instructions as the second processing is likely to have more opportunities to coalesce copies, etc. Unfortunately, there was one section of processing that was not deferred -- the INSERT_SUBREG rewriting. Due to quirks of how this rewriting proceeded, not only did it occur early, it removed the bits of information needed for the deferred processing to correctly generate the necessary two address form (specifically inserting a copy), but didn't trigger any immediate assertions and produced what appeared to be already valid two-address from code. Thus, the assertion only fired much later in the pipeline. The fix is to hoist the transformation logic up layer to where it can more firmly defer all further processing, and to teach the normal processing to handle an edge case previously handled as part of the transformation logic. This edge case (already matched tied register operands) needs to *not* defer any steps. As has been brought up repeatedly in the process: wow does this code need refactoring. I *may* squeeze in some time to at least bring sanity to this loop... but wow... =] Thanks to Jakob for helpful hints on the way here, and the review. llvm-svn: 160443
-
Andrew Trick authored
Based on Evan's suggestion without a commitable test. llvm-svn: 160441
-
Andrew Trick authored
llvm-svn: 160440
-
Andrew Trick authored
llvm-svn: 160439
-
Victor Oliveira authored
llvm-svn: 160438
-
Simon Atanasyan authored
- section types - dynamic table entries tags - state flags for DT_FLAGS_1 entry The patch reviewed by Rafael Espindola. llvm-svn: 160433
-
NAKAMURA Takumi authored
llvm-svn: 160431
-
Nadav Rotem authored
load source operand is used by multiple nodes. The v2i64 broadcast was emulated by shuffling the two lower i32 elements to the upper two. We had a bug in the immediate used for the broadcast. Replacing 0 to 0x44. 0x44 means [01|00|01|00] which corresponds to the correct lane. Patch by Michael Kuperstein. llvm-svn: 160430
-
Jack Carter authored
Print the high order register of a double word register operand. In 32 bit mode, a 64 bit double word integer will be represented by 2 32 bit registers. This modifier causes the high order register to be used in the asm expression. It is useful if you are using doubles in assembler and continue to control register to variable relationships. This patch also fixes a related bug in a previous patch: case 'D': // Second part of a double word register operand case 'L': // Low order register of a double word register operand case 'M': // High order register of a double word register operand I got 'D' and 'M' confused. The second part of a double word operand will only match 'M' for one of the endianesses. I had 'L' and 'D' be the opposite twins when 'L' and 'M' are. llvm-svn: 160429
-
Andrew Trick authored
Expression trees may be DAGs. Make sure traversal has linear complexity. llvm-svn: 160426
-
Craig Topper authored
llvm-svn: 160425
-
Craig Topper authored
llvm-svn: 160423
-
Andrew Trick authored
Minor oversight noticed by inspection. Sorry no unit test. llvm-svn: 160422
-
Andrew Trick authored
Fixes PR13371: indvars pass incorrectly substitutes 'undef' values. I do not like this fix. It's needed until/unless the meaning of undef changes. It attempts to be complete according to the IR spec, but I don't have much confidence in the implementation given the difficulty testing undefined behavior. Worse, this invalidates some of my hard-fought work on indvars and LSR to optimize pointer induction variables. It results benchmark regressions, which I'll track internally. On x86_64 no LTO I see: -3% huffbench -3% 400.perlbench -8% fhourstones My only suggestion for recovering is to change the meaning of undef. If we could trust an arbitrary instruction to produce a some real value that can be manipulated (e.g. incremented) according to non-undef rules, then this case could be easily handled with SCEV. llvm-svn: 160421
-
Craig Topper authored
Make x86 asm parser to check for xmm vs ymm for index register in gather instructions. Also fix Intel syntax for gather instructions to use 'DWORD PTR' or 'QWORD PTR' to match gas. llvm-svn: 160420
-
Galina Kistanova authored
llvm-svn: 160419
-
Nuno Lopes authored
llvm-svn: 160411
-
Joel Jones authored
intrinsics. The second instruction(s) to be handled are the vector versions of count set bits (ctpop). The changes here are to clang so that it generates a target independent vector ctpop when it sees an ARM dependent vector bits set count. The changes in llvm are to match the target independent vector ctpop and in VMCore/AutoUpgrade.cpp to update any existing bc files containing ARM dependent vector pop counts with target-independent ctpops. There are also changes to an existing test case in llvm for ARM vector count instructions and to a test for the bitcode upgrade. <rdar://problem/11892519> There is deliberately no test for the change to clang, as so far as I know, no consensus has been reached regarding how to test neon instructions in clang; q.v. <rdar://problem/8762292> llvm-svn: 160410
-
Nuno Lopes authored
Update the language reference to reflect that. llvm-svn: 160408
-
Akira Hatanaka authored
Patch by Reed Kotler. llvm-svn: 160403
-
- Jul 17, 2012
-
-
Evan Cheng authored
llvm-svn: 160389
-
Evan Cheng authored
llvm-svn: 160387
-
Jim Grosbach authored
A standalone pattern defined in a multiclass expansion should handle null_frag references just like patterns on instructions. Follow-up to r160333. llvm-svn: 160384
-
Jakob Stoklund Olesen authored
These functions have obviously never been used before. They should be identical to the idf_ext_iterator counterparts. llvm-svn: 160381
-
Jakob Stoklund Olesen authored
llvm-svn: 160380
-
Benjamin Kramer authored
llvm-svn: 160372
-
Nuno Lopes authored
llvm-svn: 160368
-
NAKAMURA Takumi authored
It began choking since Chandler's r159547, possibly due to improper expression on grep from TclParser to ShParser. llvm-svn: 160367
-
Jakob Stoklund Olesen authored
Make it possible to prune individual graph edges from a post-order traversal by specializing the po_iterator_storage template. Previously, it was only possible to prune full graph nodes. Edge pruning makes it possible to remove loop back-edges, for example. Also replace the existing DFSetTraits customization hook with a po_iterator_storage method for observing the post-order. DFSetTraits was only used by LoopIterator.h which now provides a po_iterator_storage specialization. Thanks to Sean and Chandler for reviewing. llvm-svn: 160366
-
Alexey Samsonov authored
To fetch a subprogram name we should not only inspect the DIE for this subprogram, but optionally inspect its specification, or its abstract origin (even if there is no inlining), or even specification of an abstract origin. Reviewed by Benjamin Kramer. llvm-svn: 160365
-
Kostya Serebryany authored
[asan] more code to merge crash callbacks. Doesn't fully work yet, but allows to hold performance experiments llvm-svn: 160361
-
Nadav Rotem authored
When truncating a result of a vector that is split we need to use the result of the split vector, and not re-split the dead node. llvm-svn: 160357
-
Evan Cheng authored
llvm-svn: 160354
-
Simon Atanasyan authored
llvm-svn: 160352
-