| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 278737
|
| |
|
|
|
|
| |
https://llvm.org/svn/llvm-project/llvm/trunk@278725 91177308-0d34-0410-b5e6-96231b3b80d8
llvm-svn: 278732
|
| |
|
|
|
|
|
|
| |
Patch by Pankaj Chawla
Differential Revision: https://reviews.llvm.org/D22377
llvm-svn: 278731
|
| |
|
|
| |
llvm-svn: 278727
|
| |
|
|
| |
llvm-svn: 278726
|
| |
|
|
|
|
| |
Differential Revsion: https://reviews.llvm.org/D22932
llvm-svn: 278725
|
| |
|
|
| |
llvm-svn: 278724
|
| |
|
|
| |
llvm-svn: 278721
|
| |
|
|
| |
llvm-svn: 278717
|
| |
|
|
| |
llvm-svn: 278714
|
| |
|
|
|
|
| |
Now the increment is done in a different location
llvm-svn: 278713
|
| |
|
|
|
|
|
|
|
|
|
| |
This currently breaks the greendragon clang-stage1-configure-RA/ and
brotli. It is probably just uncovering a pre-existing problem. Reverting
temporarily to get the buildbots green again. A reduced testcase will
follow shortly.
This reverts commit r278659.
llvm-svn: 278711
|
| |
|
|
| |
llvm-svn: 278709
|
| |
|
|
| |
llvm-svn: 278708
|
| |
|
|
| |
llvm-svn: 278707
|
| |
|
|
| |
llvm-svn: 278705
|
| |
|
|
| |
llvm-svn: 278704
|
| |
|
|
|
|
|
|
|
|
|
| |
in debug info using their stack slots instead of as an indirection of param reg + 0
offset. This is done by detecting FrameIndexSDNodes in SelectionDAG and generating
FrameIndexDbgValues for them. This ultimately generates DBG_VALUEs with stack
location operands.
Differential Revision: http://reviews.llvm.org/D23283
llvm-svn: 278703
|
| |
|
|
| |
llvm-svn: 278689
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
New mutation: InsertRepeatedBytes.
Updated mutation: EraseByte => EraseBytes.
This helps https://github.com/google/sanitizers/issues/710
where libFuzzer was not able to find a known bug.
Now it finds it in minutes.
Hopefully, the change is general enough to help other targets.
llvm-svn: 278687
|
| |
|
|
|
|
|
| |
Note that several of these tests belong in InstSimplify rather than
InstCombine because they return existing operands or constants.
llvm-svn: 278684
|
| |
|
|
| |
llvm-svn: 278683
|
| |
|
|
| |
llvm-svn: 278682
|
| |
|
|
| |
llvm-svn: 278676
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r278660.
It causes downstream assertion failure in InstCombine on shuffle
instructions. Comes up in __mm_swizzle_epi32.
llvm-svn: 278672
|
| |
|
|
|
|
| |
Differential revision: https://reviews.llvm.org/D23323
llvm-svn: 278665
|
| |
|
|
|
|
|
|
|
|
|
| |
This adds two new utility functions findLoopControlBlock and findLoopPreheader
to MachineLoop and MachineLoopInfo. These functions are refactored and taken
from the Hexagon target as they are target independent; thus this is intendend to
be a non-functional change.
Differential Revision: https://reviews.llvm.org/D22959
llvm-svn: 278661
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new version has several advantages:
1) IMSHO it's more readable and neater
2) It handles loads and stores properly
3) It can handle any number of incoming blocks rather than just two. I'll be taking advantage of this in a followup patch.
With this change we can now finally sink load-modify-store idioms such as:
if (a)
return *b += 3;
else
return *b += 4;
=>
%z = load i32, i32* %y
%.sink = select i1 %a, i32 5, i32 7
%b = add i32 %z, %.sink
store i32 %b, i32* %y
ret i32 %b
When this works for switches it'll be even more powerful.
llvm-svn: 278660
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The assembler currently does not check the branch target for CBZ/CBNZ
instructions, which only permit branching forwards with a positive offset. This
adds validation for the branch target to ensure negative PC-relative offsets are
not encoded into the instruction, whether specified as a literal or as an
assembler symbol.
Reviewers: rengolin, t.p.northover
Subscribers: llvm-commits, rengolin
Differential Revision: https://reviews.llvm.org/D23312
llvm-svn: 278659
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a loop is not rotated (for example when optimizing for size), the latch is not the backedge. If we promote an expression to post-inc form, we not only increase register pressure and add a COPY for that IV expression but for all IVs!
Motivating testcase:
void f(float *a, float *b, float *c, int n) {
while (n-- > 0)
*c++ = *a++ + *b++;
}
It's imperative that the pointer increments be located in the latch block and not the header block; if not, we cannot use post-increment loads and stores and we have to keep both the post-inc and pre-inc values around until the end of the latch which bloats register usage.
llvm-svn: 278658
|
| |
|
|
| |
llvm-svn: 278654
|
| |
|
|
| |
llvm-svn: 278653
|
| |
|
|
| |
llvm-svn: 278652
|
| |
|
|
|
|
|
| |
collectMDInDomain doesn't use any class members, making it a free
function is not a functional change.
llvm-svn: 278651
|
| |
|
|
|
|
| |
No functional change is intended.
llvm-svn: 278646
|
| |
|
|
|
|
| |
No functional change is intended.
llvm-svn: 278645
|
| |
|
|
|
|
|
| |
This reverts commit r278641. I'm not sure why but this has upset the
multistage builders...
llvm-svn: 278644
|
| |
|
|
|
|
|
|
|
|
|
| |
We are trying to prove that one group of operands is a subset of
another. We did this by populating two Sets and determining that every
element within one was inside the other.
However, this is unnecessary. We can simply construct a single set and
test if each operand is within it.
llvm-svn: 278641
|
| |
|
|
| |
llvm-svn: 278639
|
| |
|
|
| |
llvm-svn: 278637
|
| |
|
|
| |
llvm-svn: 278636
|
| |
|
|
| |
llvm-svn: 278635
|
| |
|
|
| |
llvm-svn: 278634
|
| |
|
|
| |
llvm-svn: 278633
|
| |
|
|
| |
llvm-svn: 278632
|
| |
|
|
| |
llvm-svn: 278631
|
| |
|
|
| |
llvm-svn: 278630
|
| |
|
|
| |
llvm-svn: 278629
|
| |
|
|
|
|
| |
folding tables.
llvm-svn: 278628
|
| |
|
|
| |
llvm-svn: 278627
|