oota-llvm.git
12 years agoTest basic SEH directive-parsing functionality. Fix a latent bug exposed by
Charles Davis [Tue, 24 May 2011 21:22:53 +0000 (21:22 +0000)]
Test basic SEH directive-parsing functionality. Fix a latent bug exposed by
this test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132004 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoEnable printing of immediates that do not fit in 16-bit. .cprestore can have
Akira Hatanaka [Tue, 24 May 2011 21:22:21 +0000 (21:22 +0000)]
Enable printing of immediates that do not fit in 16-bit. .cprestore can have
offsets that are larger than 0x10000.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132003 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoChange condition for determining whether a function is small for inlining metrics...
Eli Friedman [Tue, 24 May 2011 20:22:24 +0000 (20:22 +0000)]
Change condition for determining whether a function is small for inlining metrics so that very long functions
with few basic blocks are not re-analyzed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131994 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImplement the rest of the SEH directive-parsing methods in the COFFAsmParser.
Charles Davis [Tue, 24 May 2011 20:06:30 +0000 (20:06 +0000)]
Implement the rest of the SEH directive-parsing methods in the COFFAsmParser.

Add a size alignment check to the .seh_stackalloc directive parser. Add a
more descriptive error message to the .seh_handler directive parser.

Add methods to the TargetAsmInfo struct in support of all this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131992 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix test case.
Akira Hatanaka [Tue, 24 May 2011 19:37:15 +0000 (19:37 +0000)]
Fix test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131988 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRevision 131986 test case.
Akira Hatanaka [Tue, 24 May 2011 19:29:37 +0000 (19:29 +0000)]
Revision 131986 test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131987 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImplement byval structure argument passing. The following limitations or
Akira Hatanaka [Tue, 24 May 2011 19:18:33 +0000 (19:18 +0000)]
Implement byval structure argument passing. The following limitations or
deficiencies exist:

- Works only if ABI is o32.
- Zero-sized structures cannot be passed.
- There is a lot of redundancy in generated code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131986 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake instcombine O(N) instead of O(N^2) in code where the same simplifiable constant...
Eli Friedman [Tue, 24 May 2011 18:52:07 +0000 (18:52 +0000)]
Make instcombine O(N) instead of O(N^2) in code where the same simplifiable constant is used many times.
Part of rdar://9471075.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131979 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove dead code.
Devang Patel [Tue, 24 May 2011 18:27:52 +0000 (18:27 +0000)]
Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131974 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix "make check" in Release by removing debug-only options from an 'opt' invocation.
Cameron Zwarich [Tue, 24 May 2011 18:26:09 +0000 (18:26 +0000)]
Fix "make check" in Release by removing debug-only options from an 'opt' invocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131972 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake DecomposeGEPExpression check SimplifyInstruction only
Dan Gohman [Tue, 24 May 2011 18:24:08 +0000 (18:24 +0000)]
Make DecomposeGEPExpression check SimplifyInstruction only
after checking for a GEP, so that it matches what GetUnderlyingObject
does. This fixes an obscure bug turned up by bugpoint in the testcase
for PR9931.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131971 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd a method to TargetRegisterInfo to get the register number that the Win64 EH
Charles Davis [Tue, 24 May 2011 16:57:53 +0000 (16:57 +0000)]
Add a method to TargetRegisterInfo to get the register number that the Win64 EH
scheme uses internally. Implement it for x86 (the only architecture that LLVM
supports for which this matters right now).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131969 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoClean up the lazy initialization of DIBuilder a bit.
Cameron Zwarich [Tue, 24 May 2011 06:00:08 +0000 (06:00 +0000)]
Clean up the lazy initialization of DIBuilder a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131956 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoWork around code generation bug in Visual Studio 2010.
Jakob Stoklund Olesen [Tue, 24 May 2011 03:20:56 +0000 (03:20 +0000)]
Work around code generation bug in Visual Studio 2010.

See http://llvm.org/pr9976 for details.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131954 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake LoadAndStorePromoter preserve debug info and create llvm.dbg.values when
Cameron Zwarich [Tue, 24 May 2011 03:10:43 +0000 (03:10 +0000)]
Make LoadAndStorePromoter preserve debug info and create llvm.dbg.values when
promoting allocas to SSA variables. Fixes <rdar://problem/9479036>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131953 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoExplain FIXME.
Rafael Espindola [Tue, 24 May 2011 03:10:31 +0000 (03:10 +0000)]
Explain FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131952 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix the defaults for .eh_frame. We were marking it as writable.
Rafael Espindola [Tue, 24 May 2011 02:50:20 +0000 (02:50 +0000)]
Fix the defaults for .eh_frame. We were marking it as writable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131951 91177308-0d34-0410-b5e6-96231b3b80d8

12 years ago- Teach SelectionDAG::isKnownNeverZero to return true (op x, c) when c is
Evan Cheng [Tue, 24 May 2011 01:48:22 +0000 (01:48 +0000)]
- Teach SelectionDAG::isKnownNeverZero to return true (op x, c) when c is
  non-zero.
- Teach X86 cmov optimization to eliminate the cmov from ctlz, cttz extension
  when the source of X86ISD::BSR / X86ISD::BSF is proven to be non-zero.

rdar://9490949

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131948 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove dead option.
Evan Cheng [Tue, 24 May 2011 01:43:38 +0000 (01:43 +0000)]
Remove dead option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131947 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFileCheck-ize a couple of IV unit tests.
Andrew Trick [Tue, 24 May 2011 01:02:49 +0000 (01:02 +0000)]
FileCheck-ize a couple of IV unit tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131946 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix cmake dependencies.
Rafael Espindola [Tue, 24 May 2011 00:58:06 +0000 (00:58 +0000)]
Fix cmake dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131943 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoSimplify offset calculation of stack frame objects for $gp restore location and
Akira Hatanaka [Tue, 24 May 2011 00:23:52 +0000 (00:23 +0000)]
Simplify offset calculation of stack frame objects for $gp restore location and
variable arguments in LowerCall and LowerFormalArguments. This should also fix
the bug in which handling of variable arguments is incorrect when the front-end
optimizes away unused fixed arguments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131942 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix debug info for blocks' variable.
Devang Patel [Tue, 24 May 2011 00:22:25 +0000 (00:22 +0000)]
Fix debug info for blocks' variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131940 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTest case for r130799 - indvars: Added canExpandBackEdgeTakenCount.
Andrew Trick [Tue, 24 May 2011 00:17:53 +0000 (00:17 +0000)]
Test case for r130799 - indvars: Added canExpandBackEdgeTakenCount.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131939 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRemove unnecessary comment.
Devang Patel [Mon, 23 May 2011 23:16:14 +0000 (23:16 +0000)]
Remove unnecessary comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131936 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoExpand f64 FPOW.
Akira Hatanaka [Mon, 23 May 2011 22:23:58 +0000 (22:23 +0000)]
Expand f64 FPOW.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131928 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd pattern for double-to-integer conversion. Patch by Sasa Stankovic.
Akira Hatanaka [Mon, 23 May 2011 22:16:43 +0000 (22:16 +0000)]
Add pattern for double-to-integer conversion. Patch by Sasa Stankovic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131927 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRevert 121907 (it causes llc crash) and apply original patch from PR9817.
Devang Patel [Mon, 23 May 2011 22:04:42 +0000 (22:04 +0000)]
Revert 121907 (it causes llc crash) and apply original patch from PR9817.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131926 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFixes related to coding style.
Akira Hatanaka [Mon, 23 May 2011 21:13:59 +0000 (21:13 +0000)]
Fixes related to coding style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131922 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoDocument llvm.exp and llvm.pow.
Dan Gohman [Mon, 23 May 2011 21:13:03 +0000 (21:13 +0000)]
Document llvm.exp and llvm.pow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131921 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoWhen checking for signed multiplication overflow, watch out for INT_MIN and -1.
Dan Gohman [Mon, 23 May 2011 21:07:39 +0000 (21:07 +0000)]
When checking for signed multiplication overflow, watch out for INT_MIN and -1.
This fixes PR9845.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131919 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoPropagate error correctly in the MC Asm parser for leading '$' expressions.
Jim Grosbach [Mon, 23 May 2011 20:36:04 +0000 (20:36 +0000)]
Propagate error correctly in the MC Asm parser for leading '$' expressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131918 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix MipsAsmPrinter::printSavedRegsBitmaskChange. Remove functions and variables
Akira Hatanaka [Mon, 23 May 2011 20:34:30 +0000 (20:34 +0000)]
Fix MipsAsmPrinter::printSavedRegsBitmaskChange. Remove functions and variables
in MipsFunctionInfo that are no longer used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131917 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoclarify this, apparently it is confusing :)
Chris Lattner [Mon, 23 May 2011 20:17:44 +0000 (20:17 +0000)]
clarify this, apparently it is confusing :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131916 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoChange StackDirection from StackGrowsUp to StackGrowsDown.
Akira Hatanaka [Mon, 23 May 2011 20:16:59 +0000 (20:16 +0000)]
Change StackDirection from StackGrowsUp to StackGrowsDown.

The following improvements are accomplished as a result of applying this patch:
- Fixed frame objects' offsets (relative to either the virtual frame pointer or
  the stack pointer) are set before instruction selection is completed. There is
  no need to wait until Prologue/Epilogue Insertion is run to set them.
- Calculation of final offsets of fixed frame objects is straightforward. It is
  no longer necessary to assign negative offsets to fixed objects for incoming
  arguments in order to distinguish them from the others.
- Since a fixed object has its relative offset set during instruction
  selection, there is no need to conservatively set its alignment to 4.
- It is no longer necessary to reorder non-fixed frame objects in
  MipsFrameLowering::adjustMipsStackFrame.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131915 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTest case for r131908.
Devang Patel [Mon, 23 May 2011 17:49:29 +0000 (17:49 +0000)]
Test case for r131908.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131909 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoPreserve debug info during iSel by keeping DanglingDebugInfoMap live until end of...
Devang Patel [Mon, 23 May 2011 17:44:13 +0000 (17:44 +0000)]
Preserve debug info during iSel by keeping DanglingDebugInfoMap live until end of function.
Patch by Micah Villmow

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131908 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoWhile replacing all uses of a SDValue with another value, do not forget to transfer...
Devang Patel [Mon, 23 May 2011 17:35:08 +0000 (17:35 +0000)]
While replacing all uses of a SDValue with another value, do not forget to transfer SDDbgValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131907 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoClear list of instructions without DebugLoc.
Devang Patel [Mon, 23 May 2011 17:34:18 +0000 (17:34 +0000)]
Clear list of instructions without DebugLoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131906 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoThe dragonegg option to disable LLVM optimizations changed.
Duncan Sands [Mon, 23 May 2011 16:50:29 +0000 (16:50 +0000)]
The dragonegg option to disable LLVM optimizations changed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131903 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImplement .seh_stackalloc and .seh_pushframe parsing.
Charles Davis [Mon, 23 May 2011 16:43:09 +0000 (16:43 +0000)]
Implement .seh_stackalloc and .seh_pushframe parsing.

I haven't implemented any of the ones that take registers yet. The problem is
that for x86-64 the streamer methods expect a native x86 register number (note:
%r8-%r15 want 8-15 instead of 0-7; same for %xmm8-%xmm15). I haven't figured
out exactly how I want to do that yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131899 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agofix a really nasty basicaa mod/ref calculation bug that was causing miscompilation of
Chris Lattner [Mon, 23 May 2011 05:15:43 +0000 (05:15 +0000)]
fix a really nasty basicaa mod/ref calculation bug that was causing miscompilation of
UnitTests/ObjC/messages-2.m with the recent optimizer improvements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131897 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix <rdar://problem/9476260> by having tail calls always generate 32-bit branches
Cameron Zwarich [Mon, 23 May 2011 01:57:17 +0000 (01:57 +0000)]
Fix <rdar://problem/9476260> by having tail calls always generate 32-bit branches
in Darwin Thumb2 code. Tail calls are already disabled on Thumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131894 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agorearrange two transforms, since one subsumes the other. Make the shift-exactness
Chris Lattner [Mon, 23 May 2011 00:32:19 +0000 (00:32 +0000)]
rearrange two transforms, since one subsumes the other.  Make the shift-exactness
xform recurse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131888 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTransform any logical shift of a power of two into an exact/NUW shift when
Chris Lattner [Mon, 23 May 2011 00:21:50 +0000 (00:21 +0000)]
Transform any logical shift of a power of two into an exact/NUW shift when
in a known-non-zero context.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131887 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoUse a more efficient data structure for the "operand map". The number of
Bill Wendling [Mon, 23 May 2011 00:18:33 +0000 (00:18 +0000)]
Use a more efficient data structure for the "operand map". The number of
operands to an instruction aren't great, so an iterative search is fairly quick
and doesn't have the overhead of std::map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131886 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agouse the valuetracking isPowerOfTwo function, which is more powerful than checking
Chris Lattner [Mon, 23 May 2011 00:09:55 +0000 (00:09 +0000)]
use the valuetracking isPowerOfTwo function, which is more powerful than checking
for a constant directly.  Thanks to Duncan for pointing this out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131885 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTeach valuetracking that byval arguments with a specified alignment are
Chris Lattner [Mon, 23 May 2011 00:03:39 +0000 (00:03 +0000)]
Teach valuetracking that byval arguments with a specified alignment are
aligned.

Teach memcpyopt to not give up all hope when confonted with an underaligned
memcpy feeding an overaligned byval.  If the *source* of the memcpy can be
determined to be adequeately aligned, or if it can be forced to be, we can
eliminate the memcpy.

This addresses PR9794.  We now compile the example into:

define i32 @f(%struct.p* nocapture byval align 8 %q) nounwind ssp {
entry:
  %call = call i32 @g(%struct.p* byval align 8 %q) nounwind
  ret i32 %call
}

in both x86-64 and x86-32 mode.  We still don't get a tailcall though,
because tailcalls apparently can't handle byval.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131884 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd a helper method to get the byval alignment of an argument.
Chris Lattner [Sun, 22 May 2011 23:57:23 +0000 (23:57 +0000)]
add a helper method to get the byval alignment of an argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131883 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoEliminate some temporary variables, and don't call getByValTypeAlignment
Chris Lattner [Sun, 22 May 2011 23:23:02 +0000 (23:23 +0000)]
Eliminate some temporary variables, and don't call getByValTypeAlignment
when we're just going to throw the result away.  No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131880 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd test from PR9164
Chris Lattner [Sun, 22 May 2011 22:35:34 +0000 (22:35 +0000)]
add test from PR9164

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131876 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agotestcase for PR9378
Chris Lattner [Sun, 22 May 2011 22:32:53 +0000 (22:32 +0000)]
testcase for PR9378

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131875 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd a missing alias to make us more bug compatible with gcc, PR9378
Chris Lattner [Sun, 22 May 2011 22:31:57 +0000 (22:31 +0000)]
add a missing alias to make us more bug compatible with gcc, PR9378

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131874 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agodocument thiscall, PR9101
Chris Lattner [Sun, 22 May 2011 22:28:47 +0000 (22:28 +0000)]
document thiscall, PR9101

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131873 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoimplement PR9315, constant folding exp2 in terms of pow (since hosts without
Chris Lattner [Sun, 22 May 2011 22:22:35 +0000 (22:22 +0000)]
implement PR9315, constant folding exp2 in terms of pow (since hosts without
C99 runtimes don't have exp2).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131872 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRTABI chapter 4.3.4 specifies __eabi_mem* calls. Specifically, __eabi_memset accepts...
Renato Golin [Sun, 22 May 2011 21:41:23 +0000 (21:41 +0000)]
RTABI chapter 4.3.4 specifies __eabi_mem* calls. Specifically, __eabi_memset accepts parameters (ptr, size, value) in a different order than GNU's memset (ptr, value, size), therefore the special lowering in AAPCS mode. Implementation by Evzen Muller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131868 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd methods to parse the SEH directives to the COFFAsmParser. Implement some
Charles Davis [Sun, 22 May 2011 21:12:15 +0000 (21:12 +0000)]
Add methods to parse the SEH directives to the COFFAsmParser. Implement some
of them, particularly the ones that don't take arguments. Also implement
.seh_proc and .seh_handler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131866 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd a note.
Chris Lattner [Sun, 22 May 2011 18:28:46 +0000 (18:28 +0000)]
add a note.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131863 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd some random notes.
Chris Lattner [Sun, 22 May 2011 18:26:48 +0000 (18:26 +0000)]
add some random notes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131862 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTeach ValueTracking about x86 crc32 intrinsics.
Evan Cheng [Sun, 22 May 2011 18:25:30 +0000 (18:25 +0000)]
Teach ValueTracking about x86 crc32 intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131861 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoCarve out a place in instcombine to put transformations which work knowing that their
Chris Lattner [Sun, 22 May 2011 18:18:41 +0000 (18:18 +0000)]
Carve out a place in instcombine to put transformations which work knowing that their
result is non-zero.  Implement an example optimization (PR9814), which allows us to
transform:
  A / ((1 << B) >>u 2)
into:
  A >>u (B-2)

which we compile into:

_divu3:                                 ## @divu3
leal -2(%rsi), %ecx
shrl %cl, %edi
movl %edi, %eax
ret

instead of:

_divu3:                                 ## @divu3
movb %sil, %cl
movl $1, %esi
shll %cl, %esi
shrl $2, %esi
movl %edi, %eax
xorl %edx, %edx
divl %esi, %eax
ret

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131860 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix Bug 9386 - ARM disassembler failed to disassemble conditional bx
Johnny Chen [Sun, 22 May 2011 17:51:04 +0000 (17:51 +0000)]
Fix Bug 9386 - ARM disassembler failed to disassemble conditional bx

Modified the patch to .td file supplied by Jyun-Yan You.  Add a test case and
modified ARMDisassemblerCore.cpp a little bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131859 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix PR9815: I was trying to get out of "generating code and then
Chris Lattner [Sun, 22 May 2011 17:39:56 +0000 (17:39 +0000)]
Fix PR9815: I was trying to get out of "generating code and then
failing to form a memset, then having to delete it" but my approximation
isn't safe for self recurrent loops.  Instead of doign a hack, just
do it the right way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131858 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd a parameter to ConstantFoldTerminator() that callers can use to ask it to also...
Frits van Bommel [Sun, 22 May 2011 16:24:18 +0000 (16:24 +0000)]
Add a parameter to ConstantFoldTerminator() that callers can use to ask it to also clean up the condition of any conditional terminator it folds to be unconditional, if that turns the condition into dead code. This just means it calls RecursivelyDeleteTriviallyDeadInstructions() in strategic spots. It defaults to the old behavior.

I also changed -simplifycfg, -jump-threading and -codegenprepare to use this to produce slightly better code without any extra cleanup passes (AFAICT this was the only place in -simplifycfg where now-dead conditions of replaced terminators weren't being cleaned up). The only other user of this function is -sccp, but I didn't read that thoroughly enough to figure out whether it might be holding pointers to instructions that could be deleted by this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131855 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoanother typo
Chris Lattner [Sun, 22 May 2011 15:44:02 +0000 (15:44 +0000)]
another typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131854 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agofix comment typo
Chris Lattner [Sun, 22 May 2011 15:34:37 +0000 (15:34 +0000)]
fix comment typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131853 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoI missed a checking with my GVN change.
Chris Lattner [Sun, 22 May 2011 07:20:02 +0000 (07:20 +0000)]
I missed a checking with my GVN change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131851 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoinsertvalue takes a variable number of arguments, document this, fixing PR9935.
Chris Lattner [Sun, 22 May 2011 07:18:08 +0000 (07:18 +0000)]
insertvalue takes a variable number of arguments, document this, fixing PR9935.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131850 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agofix PR9856, an incorrectly conservative assertion: a global can be
Chris Lattner [Sun, 22 May 2011 07:15:13 +0000 (07:15 +0000)]
fix PR9856, an incorrectly conservative assertion: a global can be
"stored once" even if its address is compared.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131849 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agofix PR9841 by having GVN not process dead loads. This was
Chris Lattner [Sun, 22 May 2011 07:03:34 +0000 (07:03 +0000)]
fix PR9841 by having GVN not process dead loads.  This was
causing it to get into infinite loops when it would widen a
load (which can necessarily leave around dead loads).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131847 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoremove a trivial test, make some other tests less trivial.
Chris Lattner [Sun, 22 May 2011 07:02:43 +0000 (07:02 +0000)]
remove a trivial test, make some other tests less trivial.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131846 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agomake this test less trivial.
Chris Lattner [Sun, 22 May 2011 06:59:33 +0000 (06:59 +0000)]
make this test less trivial.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131845 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoinitialize and finalize function passes, pointed out by Cameron.
Chris Lattner [Sun, 22 May 2011 06:44:19 +0000 (06:44 +0000)]
initialize and finalize function passes, pointed out by Cameron.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131843 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agofix a bug for hosts without round, PR8893.
Chris Lattner [Sun, 22 May 2011 06:03:53 +0000 (06:03 +0000)]
fix a bug for hosts without round, PR8893.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131842 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agomove PR9408 here.
Chris Lattner [Sun, 22 May 2011 05:45:06 +0000 (05:45 +0000)]
move PR9408 here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131841 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoCommit test change, forgotten as part of r131838.
Nick Lewycky [Sun, 22 May 2011 05:31:47 +0000 (05:31 +0000)]
Commit test change, forgotten as part of r131838.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131839 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoTeach the inliner to emit llvm.lifetime.start/end, to scope the local variables
Nick Lewycky [Sun, 22 May 2011 05:22:10 +0000 (05:22 +0000)]
Teach the inliner to emit llvm.lifetime.start/end, to scope the local variables
of the inlinee to the code representing the original function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131838 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoswitch to using a smallvector to avoid allocations for most normal size instructions.
Chris Lattner [Sun, 22 May 2011 04:53:24 +0000 (04:53 +0000)]
switch to using a smallvector to avoid allocations for most normal size instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131837 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agotidy some things up.
Chris Lattner [Sun, 22 May 2011 04:52:24 +0000 (04:52 +0000)]
tidy some things up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131836 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix some minor typos and grammar.
Chris Lattner [Sun, 22 May 2011 04:44:48 +0000 (04:44 +0000)]
Fix some minor typos and grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131835 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoImplement emission of all Win64 exception tables. Make the COFF streamer emit
Charles Davis [Sun, 22 May 2011 04:15:07 +0000 (04:15 +0000)]
Implement emission of all Win64 exception tables. Make the COFF streamer emit
these tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131833 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoMake the COFF streamer emit unwind info when processing a .seh_handlerdata
Charles Davis [Sun, 22 May 2011 03:01:05 +0000 (03:01 +0000)]
Make the COFF streamer emit unwind info when processing a .seh_handlerdata
directive.

Implement emission of Win64 EH unwind info.

Pull in <cassert> in MCWin64EH.h so it can use the assert() macro.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131832 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoFix grammar in test.
Nick Lewycky [Sun, 22 May 2011 01:16:00 +0000 (01:16 +0000)]
Fix grammar in test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131831 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoDon't allow unaligned offsets and sizes in the Win64 EH directives.
Charles Davis [Sun, 22 May 2011 00:56:20 +0000 (00:56 +0000)]
Don't allow unaligned offsets and sizes in the Win64 EH directives.
Also, fix threshold for 'Big' register saves.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131830 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agorandom comment cleanups.
Chris Lattner [Sun, 22 May 2011 00:50:53 +0000 (00:50 +0000)]
random comment cleanups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131829 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agofix a file system case sensitivity issue.
Chris Lattner [Sun, 22 May 2011 00:37:51 +0000 (00:37 +0000)]
fix a file system case sensitivity issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131828 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoremove StandardPasses, it has been replaced with PassManagerBuilder
Chris Lattner [Sun, 22 May 2011 00:30:45 +0000 (00:30 +0000)]
remove StandardPasses, it has been replaced with PassManagerBuilder

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131827 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoswitch opt to using PassManagerBuilder.h
Chris Lattner [Sun, 22 May 2011 00:21:33 +0000 (00:21 +0000)]
switch opt to using PassManagerBuilder.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131824 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoswitch llvm-ld. It has a terrible mechanism that people can add extra
Chris Lattner [Sun, 22 May 2011 00:21:15 +0000 (00:21 +0000)]
switch llvm-ld.  It has a terrible mechanism that people can add extra
passes, it should be converted to use extension points.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131823 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoswitch bugpoint and liblto to PassManagerBuilder.
Chris Lattner [Sun, 22 May 2011 00:20:07 +0000 (00:20 +0000)]
switch bugpoint and liblto to PassManagerBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131821 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd support for LTO passes.
Chris Lattner [Sun, 22 May 2011 00:14:20 +0000 (00:14 +0000)]
add support for LTO passes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131820 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoeliminate dependence on StandardPasses.h. The code generator's pass pipeline
Chris Lattner [Sun, 22 May 2011 00:13:44 +0000 (00:13 +0000)]
eliminate dependence on StandardPasses.h.  The code generator's pass pipeline
should eventually convert to PMBuilder, but I don't plan to do this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131819 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoInclude DataTypes.h from this header to get the uint*_t types.
Charles Davis [Sun, 22 May 2011 00:05:26 +0000 (00:05 +0000)]
Include DataTypes.h from this header to get the uint*_t types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131817 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAllow access to the .pdata and .xdata sections through the TargetAsmInfo
Charles Davis [Sun, 22 May 2011 00:03:24 +0000 (00:03 +0000)]
Allow access to the .pdata and .xdata sections through the TargetAsmInfo
class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131816 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd an extension point mechanism that allow plugins to add stuff to
Chris Lattner [Sat, 21 May 2011 23:50:37 +0000 (23:50 +0000)]
add an extension point mechanism that allow plugins to add stuff to
the pass manager.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131814 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoAdd CreateLifetimeStart and CreateLifetimeEnd to the IRBuilder, with plans to
Nick Lewycky [Sat, 21 May 2011 23:14:36 +0000 (23:14 +0000)]
Add CreateLifetimeStart and CreateLifetimeEnd to the IRBuilder, with plans to
use these soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131812 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoRevert commit 131781, to see if it fixes the x86-64 dragonegg buildbot.
Duncan Sands [Sat, 21 May 2011 20:54:46 +0000 (20:54 +0000)]
Revert commit 131781, to see if it fixes the x86-64 dragonegg buildbot.
Original log message:
When BasicAA can determine that two pointers have the same base but
differ by a dynamic offset, return PartialAlias instead of MayAlias.
See the comment in the code for details. This fixes PR9971.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131809 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd a new PassManagerBuilder class to replace StandardPasses.h
Chris Lattner [Sat, 21 May 2011 20:39:42 +0000 (20:39 +0000)]
add a new PassManagerBuilder class to replace StandardPasses.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131807 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoadd a copy ctor to TargetLibraryInfo.
Chris Lattner [Sat, 21 May 2011 20:09:13 +0000 (20:09 +0000)]
add a copy ctor to TargetLibraryInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131806 91177308-0d34-0410-b5e6-96231b3b80d8

12 years agoPR7952: Make isa<> use the same logic as cast<>, so that they both work
Eli Friedman [Sat, 21 May 2011 19:13:10 +0000 (19:13 +0000)]
PR7952: Make isa<> use the same logic as cast<>, so that they both work
consistently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131803 91177308-0d34-0410-b5e6-96231b3b80d8