| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 129661
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The basic issue here is that bottom-up isel is matching the branch
and compare, and was failing to fold the load into the branch/compare
combo. Fixing this (by allowing folding into any instruction of a
sequence that is selected) allows us to produce things like:
cmpb $0, 52(%rax)
je LBB4_2
instead of:
movb 52(%rax), %cl
cmpb $0, %cl
je LBB4_2
This makes the generated -O0 code run a bit faster, but also speeds up
compile time by putting less pressure on the register allocator and
generating less code.
This was one of the biggest classes of missing load folding. Implementing
this shrinks 176.gcc's c-decl.s (as a random example) by about 4% in (verbose-asm)
line count.
llvm-svn: 129656
|
|
|
|
|
|
|
| |
which don't need to check for falling off the end of a block *and* end of phi
nodes, since terminators are never phis.
llvm-svn: 129655
|
|
|
|
| |
llvm-svn: 129654
|
|
|
|
|
|
|
|
|
|
| |
allowing us to fold the immediate into the 'and' in this case:
int test1(int i) {
return 8&i;
}
llvm-svn: 129653
|
|
|
|
|
|
|
| |
Returning a new node makes the code try to replace the old node, which
in the included testcase is killed by CSE.
llvm-svn: 129650
|
|
|
|
| |
llvm-svn: 129644
|
|
|
|
|
|
| |
For further information on this particular issue see: http://connect.microsoft.com/VisualStudio/feedback/details/520043/error-converting-from-null-to-a-pointer-type-in-std-pair
llvm-svn: 129642
|
|
|
|
|
|
| |
found by code inspection.
llvm-svn: 129641
|
|
|
|
| |
llvm-svn: 129640
|
|
|
|
| |
llvm-svn: 129639
|
|
|
|
|
|
| |
error in foo.o; no .eh_frame_hdr table will be created.
llvm-svn: 129635
|
|
|
|
|
|
| |
boundary. <rdar://problem/8933028>
llvm-svn: 129634
|
|
|
|
|
|
| |
the node to a libcall. rdar://9280991
llvm-svn: 129633
|
|
|
|
| |
llvm-svn: 129632
|
|
|
|
|
|
|
|
|
|
| |
Break the arc-profile code out to a function like the notes emission code is,
and reorder the functions in the file.
The only functionality change is that we no longer modify the Module when the
Module has no debug info to use.
llvm-svn: 129631
|
|
|
|
|
|
|
| |
does. Also mostly implement it. Still a work-in-progress, but generates legal
output on crafted test cases.
llvm-svn: 129630
|
|
|
|
|
|
| |
information generated for an interface.
llvm-svn: 129624
|
|
|
|
|
|
| |
rdar://problem/9292717
llvm-svn: 129619
|
|
|
|
|
|
|
|
| |
The a bit must be encoded as 0.
rdar://problem/9292625
llvm-svn: 129618
|
|
|
|
|
|
| |
in functionality.
llvm-svn: 129612
|
|
|
|
|
|
| |
a case involving EOR, so I only added a test for ORR.
llvm-svn: 129610
|
|
|
|
| |
llvm-svn: 129608
|
|
|
|
|
|
| |
change in functionality.
llvm-svn: 129606
|
|
|
|
|
|
| |
problem as all of the other instructions we fold with CMPs.
llvm-svn: 129602
|
|
|
|
| |
llvm-svn: 129601
|
|
|
|
| |
llvm-svn: 129600
|
|
|
|
|
|
| |
fixes <rdar://problem/9287901>.
llvm-svn: 129599
|
|
|
|
|
|
| |
register allocation. Define pseudos that get expanded into mtc1 or mfc1 instructions.
llvm-svn: 129594
|
|
|
|
|
|
| |
targets are getting very close to 32 subtarget features. Also teach tablegen to error when there are more than 64 features to guard against undefined behavior. rdar://9282332
llvm-svn: 129590
|
|
|
|
|
|
| |
strncmp(). Unit tests also included.
llvm-svn: 129582
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The transferValues() function can now handle both singly and multiply defined
values, as long as the resulting live range is known. Only rematerialized values
have their live range recomputed by extendRange().
The updateSSA() function can now insert PHI values in bulk across multiple
values in multiple target registers in one pass. The list of blocks received
from transferValues() is in layout order which seems to work well for the
iterative algorithm. Blocks from extendRange() are still in reverse BFS order,
but this function is used so rarely now that it doesn't matter.
llvm-svn: 129580
|
|
|
|
| |
llvm-svn: 129579
|
|
|
|
|
|
|
|
|
| |
debug info.
Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.
llvm-svn: 129571
|
|
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
|
|
|
|
|
|
|
| |
This reduces the"
It broke several builds.
llvm-svn: 129557
|
|
|
|
|
|
| |
forget to right shift the source by 32 first. rdar://9287902
llvm-svn: 129556
|
|
|
|
|
| |
Ref: I.1 Instruction encoding diagrams and pseudocode
llvm-svn: 129552
|
|
|
|
| |
llvm-svn: 129551
|
|
|
|
|
|
|
|
| |
instructions
(single element or n-element structure to all lanes).
llvm-svn: 129550
|
|
|
|
| |
llvm-svn: 129548
|
|
|
|
|
|
|
| |
canonical, and generally leads to better code. Found while looking at
an article about saturating arithmetic.
llvm-svn: 129545
|
|
|
|
|
|
|
|
|
|
| |
repeatedly undo each other. The solution is to perform more aggressive constant folding to make one of the edges just folded away rather than trying to thread it.
Fixes <rdar://problem/9284786>.
Discovered with CSmith.
llvm-svn: 129538
|
|
|
|
| |
llvm-svn: 129532
|
|
|
|
|
|
| |
operations.
llvm-svn: 129531
|
|
|
|
| |
llvm-svn: 129527
|
|
|
|
|
|
| |
RHS of a shift.
llvm-svn: 129522
|
|
|
|
|
|
| |
size of the clang binary in Debug builds from 690MB to 679MB.
llvm-svn: 129518
|
|
|
|
| |
llvm-svn: 129517
|
|
|
|
| |
llvm-svn: 129509
|