| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
structure and fix some fixmes. We now have a TreePredicateFn class
that handles all of the decoding of these things. This is an internal
cleanup that has no impact on the code generated by tblgen.
llvm-svn: 129670
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 129669
|
| |
|
|
| |
llvm-svn: 129668
|
| |
|
|
|
|
| |
llvm::StructType::get takes an ArrayRef.
llvm-svn: 129667
|
| |
|
|
|
|
|
|
|
|
| |
2. implement rdar://9289501 - fast isel should fold trivial multiplies to shifts
3. teach tblgen to handle shift immediates that are different sizes than the
shifted operands, eliminating some code from the X86 fast isel backend.
4. Have FastISel::SelectBinaryOp use (the poorly named) FastEmit_ri_ function
instead of FastEmit_ri to simplify code.
llvm-svn: 129666
|
| |
|
|
|
|
|
|
| |
Also, fold the sse4 and sse4.1 cases together.
Patch by Alexander Best!
llvm-svn: 129665
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
when we have a global variable base an an index. Instead, just give up on
folding the global variable.
Before we'd geenrate:
_test: ## @test
## BB#0:
movq _rtx_length@GOTPCREL(%rip), %rax
leaq (%rax), %rax
addq %rdi, %rax
movzbl (%rax), %eax
ret
now we generate:
_test: ## @test
## BB#0:
movq _rtx_length@GOTPCREL(%rip), %rax
movzbl (%rax,%rdi), %eax
ret
The difference is even more significant when there is a scale
involved.
This fixes rdar://9289558 - total fail with addr mode formation at -O0/x86-64
llvm-svn: 129664
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
less trivial things) into a dummy lea. Before we generated:
_test: ## @test
movq _G@GOTPCREL(%rip), %rax
leaq (%rax), %rax
ret
now we produce:
_test: ## @test
movq _G@GOTPCREL(%rip), %rax
ret
This is part of rdar://9289558
llvm-svn: 129662
|
| |
|
|
| |
llvm-svn: 129661
|
| |
|
|
|
|
| |
build.
llvm-svn: 129660
|
| |
|
|
|
|
| |
properly.
llvm-svn: 129657
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
empty IR block,
a -O0 code quality issue.
llvm-svn: 129652
|
| |
|
|
|
|
|
|
|
| |
are trivial. This exposes opportunities earlier, and allows fastisel
to do good things with these at -O0.
This addresses rdar://9289468 - clang doesn't fold memset_chk at -O0
llvm-svn: 129651
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
integer constants into select at -O0
by making the isCheapEnoughToEvaluateUnconditionally predicate handle anything that folds to a constant. In particular, we now fold enums.
llvm-svn: 129649
|
| |
|
|
| |
llvm-svn: 129644
|
| |
|
|
|
|
| |
with a 64-bit datalayout.
llvm-svn: 129643
|
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 129638
|
| |
|
|
| |
llvm-svn: 129637
|
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 129629
|
| |
|
|
|
|
|
|
|
| |
the lines between the given source range.
To determine what the indentation should be, a SourceLocation 'parentIndent' parameter is used that should be at
a source location with an indentation one degree lower than the given range.
llvm-svn: 129628
|
| |
|
|
| |
llvm-svn: 129627
|
| |
|
|
| |
llvm-svn: 129626
|
| |
|
|
| |
llvm-svn: 129625
|
| |
|
|
|
|
| |
information generated for an interface.
llvm-svn: 129624
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for "frame var" and for the
expressions that are simple enough to get passed to the "frame var" underpinnings. The parser code will
have to be changed to also query for the dynamic types & offsets as it is looking up variables.
The behavior of "frame var" is controlled in two ways. You can pass "-d {true/false} to the frame var
command to get the dynamic or static value of the variables you are printing.
There's also a general setting:
target.prefer-dynamic-value (boolean) = 'true'
which is consulted if you call "frame var" without supplying a value for the -d option.
llvm-svn: 129623
|
| |
|
|
| |
llvm-svn: 129621
|
| |
|
|
|
|
| |
"&".
llvm-svn: 129620
|
| |
|
|
|
|
| |
rdar://problem/9292717
llvm-svn: 129619
|
| |
|
|
|
|
|
|
| |
The a bit must be encoded as 0.
rdar://problem/9292625
llvm-svn: 129618
|
| |
|
|
|
|
| |
Add test case.
llvm-svn: 129617
|
| |
|
|
| |
llvm-svn: 129616
|
| |
|
|
|
|
| |
// rdar://9287695
llvm-svn: 129615
|
| |
|
|
|
|
| |
Monrocq
llvm-svn: 129614
|
| |
|
|
|
|
| |
Monrocq
llvm-svn: 129613
|
| |
|
|
|
|
| |
in functionality.
llvm-svn: 129612
|