| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
|  | 
DecomposeGEPExpression.  This dramatically simplifies and shrinks the code by eliminating the horrible CheckGEPInstructions method, fixes a miscompilation (@test3) and makes the code more aggressive.  In particular, we now handle the @test4 case, which is reduced from the SmallPtrSet constructor.  Missing this caused us to emit a variable length memset instead of a fixed size one.
llvm-svn: 89922
 | 
| | 
| 
| 
| 
| 
|  | 
Value::getUnderlyingObject does (when TD is around).  This allows us to avoid calling DecomposeGEPExpression unless the ultimate alias check we care about passes, speedup up BasicAA a bit.
llvm-svn: 89920
 | 
| | 
| 
| 
| 
| 
|  | 
list of scaled offsets.  Use this to eliminate some previous ad-hoc code which was subtly broken (it assumed all Constant*'s were non-zero, but strange constant express could be zero).
llvm-svn: 89915
 | 
| | 
| 
| 
|  | 
llvm-svn: 89914
 | 
| | 
| 
| 
|  | 
llvm-svn: 89913
 | 
| | 
| 
| 
|  | 
llvm-svn: 89912
 | 
| | 
| 
| 
|  | 
llvm-svn: 89905
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
running tail duplication when doing branch folding for if-conversion, and
we also want to be able to run tail duplication earlier to fix some
reg alloc problems.  Move the CanFallThrough function from BranchFolding
to MachineBasicBlock so that it can be shared by TailDuplication.
llvm-svn: 89904
 | 
| | 
| 
| 
| 
| 
|  | 
which accept a comma-separated string or already parsed command line parameters as input, and some code re-factoring to use these new methods.
llvm-svn: 89893
 | 
| | 
| 
| 
| 
| 
|  | 
implicit operands on copies.
llvm-svn: 89880
 | 
| | 
| 
| 
| 
| 
| 
|  | 
With the testcase for pr3120, the "threaded interpreter" runtime decreases
from 1788 to 1413 with this change.
llvm-svn: 89877
 | 
| | 
| 
| 
|  | 
llvm-svn: 89873
 | 
| | 
| 
| 
|  | 
llvm-svn: 89866
 | 
| | 
| 
| 
| 
| 
| 
|  | 
it is definitely profitable to tail duplicate indirect branches for x86.
This is likely to be true to various degrees for all modern x86 processors.
llvm-svn: 89865
 | 
| | 
| 
| 
|  | 
llvm-svn: 89863
 | 
| | 
| 
| 
|  | 
llvm-svn: 89850
 | 
| | 
| 
| 
| 
| 
|  | 
regards to comments from 89765 post review.
llvm-svn: 89848
 | 
| | 
| 
| 
| 
| 
|  | 
diagnoses this ill-formity.
llvm-svn: 89846
 | 
| | 
| 
| 
| 
| 
|  | 
proven to be bogus.
llvm-svn: 89844
 | 
| | 
| 
| 
| 
| 
|  | 
using two swc/lwc instead of sdc/ldc.
llvm-svn: 89826
 | 
| | 
| 
| 
|  | 
llvm-svn: 89824
 | 
| | 
| 
| 
| 
| 
|  | 
unnecessary save/restore.
llvm-svn: 89823
 | 
| | 
| 
| 
|  | 
llvm-svn: 89821
 | 
| | 
| 
| 
|  | 
llvm-svn: 89819
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Make tail duplication of indirect branches much more aggressive (for targets
that indicate that it is profitable), based on further experience with
this transformation.  I compiled 3 large applications with and without
this more aggressive tail duplication and measured minimal changes in code
size.  ("size" on Darwin seems to round the text size up to the nearest
page boundary, so I can only say that any code size increase was less than
one 4k page.) Radar 7421267.
llvm-svn: 89814
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This violates the ABI (that area is "reserved"), and
while it is safe if all code is generated with current
compilers, there is some very old code around that uses
that slot for something else, and breaks if it is stored
into.  Adjust testcases looking for current behavior.
I've verified that the stack frame size is right in all
testcases, whether it changed or not.  7311323.
llvm-svn: 89811
 | 
| | 
| 
| 
|  | 
llvm-svn: 89803
 | 
| | 
| 
| 
|  | 
llvm-svn: 89793
 | 
| | 
| 
| 
|  | 
llvm-svn: 89790
 | 
| | 
| 
| 
|  | 
llvm-svn: 89787
 | 
| | 
| 
| 
|  | 
llvm-svn: 89786
 | 
| | 
| 
| 
|  | 
llvm-svn: 89765
 | 
| | 
| 
| 
|  | 
llvm-svn: 89758
 | 
| | 
| 
| 
|  | 
llvm-svn: 89748
 | 
| | 
| 
| 
|  | 
llvm-svn: 89725
 | 
| | 
| 
| 
| 
| 
|  | 
No functional change.
llvm-svn: 89724
 | 
| | 
| 
| 
|  | 
llvm-svn: 89723
 | 
| | 
| 
| 
| 
| 
|  | 
(super and sub) if necessary to break an anti-dependence.
llvm-svn: 89722
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
than doing the same via constpool:
1. Load from constpool costs 3 cycles on A9, movt/movw pair - just 2.
2. Load from constpool might stall up to 300 cycles due to cache miss.
3. Movt/movw does not use load/store unit.
4. Less constpool entries => better compiler performance.
This is only enabled on ELF systems, since darwin does not have needed
relocations (yet).
llvm-svn: 89720
 | 
| | 
| 
| 
|  | 
llvm-svn: 89718
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
way for each TargetJITInfo subclass to allocate its own stubs. This
means stubs aren't as exactly-sized anymore, but it lets us get rid of
TargetJITInfo::emitFunctionStubAtAddr(), which lets ARM and PPC
support the eager JIT, fixing http://llvm.org/PR4816.
* Rename the JITEmitter's stub creation functions to describe the kind
of stub they create. So far, all of them create lazy-compilation
stubs, but they sometimes get used when far-call stubs are needed.
Fixing http://llvm.org/PR5201 will involve fixing this.
llvm-svn: 89715
 | 
| | 
| 
| 
|  | 
llvm-svn: 89713
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Note that "hasDotLocAndDotFile"-style debug info was already broken;
people wanting this functionality should implement it in the
AsmPrinter/DwarfWriter code.
llvm-svn: 89711
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
It's probably better in the long run to replace the
indirect-GlobalVariable system. That'll be done after a subsequent
patch.
llvm-svn: 89708
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
specifier suffix, move \t up stream to instruction format, and fix more 80 column violations.
This fixes the NEON asm printing so the "predicate" field is printed between the opcode and the data type suffix.
llvm-svn: 89706
 | 
| | 
| 
| 
|  | 
llvm-svn: 89702
 | 
| | 
| 
| 
| 
| 
|  | 
no filename. This situation is apparently fairly common right now.
llvm-svn: 89701
 | 
| | 
| 
| 
|  | 
llvm-svn: 89700
 | 
| | 
| 
| 
| 
| 
| 
|  | 
VDUPLND and VDUPLNQ to derive from N2V instead of N2VDup.  VDUPLND and VDUPLNQ
now expect op19_18 and op17_16 as the first two args.
llvm-svn: 89699
 | 
| | 
| 
| 
| 
| 
|  | 
negated two-part immediate.
llvm-svn: 89694
 |