|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 113522 | 
| | 
| 
| 
| 
| 
| | green.
llvm-svn: 113491 | 
| | 
| 
| 
| 
| 
| 
| 
| | - Output format and some of the code stolen from macho-dump.
- Somewhat incomplete and probably buggy.
- Comes with a very basic test.
llvm-svn: 113488 | 
| | 
| 
| 
| 
| 
| 
| | of checking for either 4 or 8 is not very satisfactory, but
it would catch the original problem (an alignment of 1).
llvm-svn: 113485 | 
| | 
| 
| 
| 
| 
| 
| | removed.  Not that the XTARGET wasn't doing anything since it
does nothing without an accompanying XFAIL.
llvm-svn: 113484 | 
| | 
| 
| 
| 
| 
| 
| | tests pass here (i686-linux and x86-64-linux) without -m64, simply
remove the -m64.
llvm-svn: 113483 | 
| | 
| 
| 
| 
| 
| 
| | the VST pseudos.  The VLD/VST scheduling still needs work (see pr6722), but
at least we shouldn't confuse the loads with the stores.
llvm-svn: 113473 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | contains a call, lower the
unrolling threshold to the optimize-for-size threshold.  Basically, for loops containing calls, unrolling
can still be profitable as long as the loop is REALLY small.
llvm-svn: 113439 | 
| | 
| 
| 
| | llvm-svn: 113427 | 
| | 
| 
| 
| 
| 
| | single test.  Patch by Dirk Steinke!
llvm-svn: 113423 | 
| | 
| 
| 
| | llvm-svn: 113422 | 
| | 
| 
| 
| 
| 
| | Re-running some nightly testers w/ it enabled to verify.
llvm-svn: 113399 | 
| | 
| 
| 
| | llvm-svn: 113392 | 
| | 
| 
| 
| 
| 
| | Some cases of lowering to rotate were miscompiled.
llvm-svn: 113355 | 
| | 
| 
| 
| | llvm-svn: 113352 | 
| | 
| 
| 
| | llvm-svn: 113350 | 
| | 
| 
| 
| 
| 
| | fixing rdar://8403974
llvm-svn: 113349 | 
| | 
| 
| 
| 
| 
| | implementing rdar://8033482 and PR7254.
llvm-svn: 113348 | 
| | 
| 
| 
| 
| 
| | Add this to the mc assembler, fixing PR8061
llvm-svn: 113346 | 
| | 
| 
| 
| 
| 
| | rdar://8061602
llvm-svn: 113343 | 
| | 
| 
| 
| 
| 
| | related. (attempt deux, complete w/ test update this time)
llvm-svn: 113333 | 
| | 
| 
| 
| | llvm-svn: 113293 | 
| | 
| 
| 
| 
| 
| | platforms.
llvm-svn: 113285 | 
| | 
| 
| 
| | llvm-svn: 113281 | 
| | 
| 
| 
| 
| 
| 
| 
| | turning (fptrunc (sqrt (fpext x))) -> (sqrtf x)  is great, but we have
to delete the original sqrt as well.  Not doing so causes us to do 
two sqrt's when building with -fmath-errno (the default on linux).
llvm-svn: 113260 | 
| | 
| 
| 
| | llvm-svn: 113257 | 
| | 
| 
| 
| | llvm-svn: 113249 | 
| | 
| 
| 
| | llvm-svn: 113237 | 
| | 
| 
| 
| | llvm-svn: 113232 | 
| | 
| 
| 
| | llvm-svn: 113213 | 
| | 
| 
| 
| 
| 
| | we begin using fast-isel but switch back to DAG building at some point.
llvm-svn: 113210 | 
| | 
| 
| 
| | llvm-svn: 113209 | 
| | 
| 
| 
| | llvm-svn: 113208 | 
| | 
| 
| 
| | llvm-svn: 113189 | 
| | 
| 
| 
| 
| 
| 
| 
| | always be disambiguated as sldtw.  sldtw and sldtq with
a mem operands have the same effect, but sldtw is more
compact.  Force it to sldtw, resolving rdar://8017530
llvm-svn: 113186 | 
| | 
| 
| 
| | llvm-svn: 113184 | 
| | 
| 
| 
| 
| 
| | allowing unsigned 8-bit operands.  This fixes rdar://8208481
llvm-svn: 113182 | 
| | 
| 
| 
| | llvm-svn: 113146 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | in the duplicated block instead of duplicating them.  
Duplicating them into the end of the loop and the preheader 
means that we got a phi node in the header of the loop, 
which prevented LICM from hoisting them.  GVN would
usually come around later and merge the duplicated 
instructions so we'd get reasonable output... except that
anything dependent on the shoulda-been-hoisted value can't
be hoisted.  In PR5319 (which this fixes), a memory value
didn't get promoted.
llvm-svn: 113134 | 
| | 
| 
| 
| | llvm-svn: 113109 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
for example, before, this code:
int foo(int x, int y, int z) {
  return x+y+z;
}
used to compile into:
_foo:                                   ## @foo
	subq	$12, %rsp
	movl	%edi, 8(%rsp)
	movl	%esi, 4(%rsp)
	movl	%edx, (%rsp)
	movl	8(%rsp), %edx
	movl	4(%rsp), %esi
	addl	%edx, %esi
	movl	(%rsp), %edx
	addl	%esi, %edx
	movl	%edx, %eax
	addq	$12, %rsp
	ret
Now we produce:
_foo:                                   ## @foo
	subq	$12, %rsp
	movl	%edi, 8(%rsp)
	movl	%esi, 4(%rsp)
	movl	%edx, (%rsp)
	movl	8(%rsp), %edx
	addl	4(%rsp), %edx    ## Folded load
	addl	(%rsp), %edx     ## Folded load
	movl	%edx, %eax
	addq	$12, %rsp
	ret
Fewer instructions and less register use = faster compiles.
llvm-svn: 113102 | 
| | 
| 
| 
| 
| 
| 
| | into an inner loop, as the new loop iteration may differ substantially.
This fixes PR8078.
llvm-svn: 113057 | 
| | 
| 
| 
| 
| 
| 
| 
| | location is being re-stored to the memory location.  We would get
a dangling pointer from the SSAUpdate data structure and miss a 
use.  This fixes PR8068
llvm-svn: 113042 | 
| | 
| 
| 
| | llvm-svn: 113025 | 
| | 
| 
| 
| 
| 
| | Bruno, please review.
llvm-svn: 113014 | 
| | 
| 
| 
| 
| 
| 
| 
| | testcases from
Amaury Pouly.
llvm-svn: 113010 | 
| | 
| 
| 
| 
| 
| 
| 
| | global when it
is provable that they're equivalent.  This fixes PR4855.
llvm-svn: 112994 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | "For ARM stack frames that utilize variable sized objects and have either
large local stack areas or require dynamic stack realignment, allocate a
base register via which to access the local frame. This allows efficient
access to frame indices not accessible via the FP (either due to being out
of range or due to dynamic realignment) or the SP (due to variable sized
object allocation). In particular, this greatly improves efficiency of access
to spill slots in Thumb functions which contain VLAs."
r112986 fixed a latent bug exposed by the above.
llvm-svn: 112989 | 
| | 
| 
| 
| | llvm-svn: 112987 | 
| | 
| 
| 
| | llvm-svn: 112971 |