- Apr 17, 2011
-
-
Anders Carlsson authored
llvm-svn: 129674
-
Anders Carlsson authored
turns out that a field or base needs to be laid out in the tail padding of the base, CGRecordLayoutBuilder::ResizeLastBaseFieldIfNecessary will convert it to an array of i8. I've audited the new test results to make sure that they are still valid. I've also verified that we pass a self-host with this change. This (finally) fixes PR5589! llvm-svn: 129673
-
Anders Carlsson authored
llvm-svn: 129672
-
Anders Carlsson authored
llvm-svn: 129671
-
Chris Lattner authored
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
-
Anders Carlsson authored
llvm-svn: 129669
-
Chris Lattner authored
llvm-svn: 129668
-
Anders Carlsson authored
Use a SmallVector for field types in CGRecordLayoutBuilder now that llvm::StructType::get takes an ArrayRef. llvm-svn: 129667
-
Chris Lattner authored
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
-
Michael J. Spencer authored
Also, fold the sse4 and sse4.1 cases together. Patch by Alexander Best! llvm-svn: 129665
-
Chris Lattner authored
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
-
Chris Lattner authored
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
-
Chris Lattner authored
llvm-svn: 129661
-
Chris Lattner authored
llvm-svn: 129660
-
Eli Friedman authored
properly. llvm-svn: 129657
-
rdar://9289512Chris Lattner authored
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
-
Chris Lattner authored
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
-
Eli Friedman authored
llvm-svn: 129654
-
rdar://9289583Chris Lattner authored
allowing us to fold the immediate into the 'and' in this case: int test1(int i) { return 8&i; } llvm-svn: 129653
-
-
Chris Lattner authored
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
-
Eli Friedman authored
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
-
rdar://9289603Chris Lattner authored
fix rdar://9289603 - clang should fold trivial ?: for enums as well as 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
-
- Apr 16, 2011
-
-
Frits van Bommel authored
llvm-svn: 129644
-
Frits van Bommel authored
Add test cases for Jay's r129641 and fix a 32-bit-centric testcase in a file with a 64-bit datalayout. llvm-svn: 129643
-
Francois Pichet authored
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
-
Jay Foad authored
found by code inspection. llvm-svn: 129641
-
Francois Pichet authored
llvm-svn: 129640
-
Benjamin Kramer authored
llvm-svn: 129639
-
Benjamin Kramer authored
llvm-svn: 129638
-
Nick Lewycky authored
llvm-svn: 129637
-
Rafael Espindola authored
error in foo.o; no .eh_frame_hdr table will be created. llvm-svn: 129635
-
Stuart Hastings authored
boundary. <rdar://problem/8933028> llvm-svn: 129634
-
Evan Cheng authored
Fix divmod libcall lowering. Convert to {S|U}DIVREM first and then expand the node to a libcall. rdar://9280991 llvm-svn: 129633
-
Rafael Espindola authored
llvm-svn: 129632
-
Nick Lewycky authored
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
-
Nick Lewycky authored
does. Also mostly implement it. Still a work-in-progress, but generates legal output on crafted test cases. llvm-svn: 129630
-
Richard Trieu authored
llvm-svn: 129629
-
Argyrios Kyrtzidis authored
Introduce Rewriter::IncreaseIndentation() which increase indentations for 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
-
Tanya Lattner authored
llvm-svn: 129627
-