Reid Spencer [Tue, 6 Mar 2007 03:05:57 +0000 (03:05 +0000)]
Remove the insufficient code in Interpreter::create that computed the
Target DataLayout incorrectly. For now, we'll trust that the module has
got the correct DataLayout. In the future, this needs to be changed to
tell the TargetData to be "current host".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34947
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 6 Mar 2007 03:04:04 +0000 (03:04 +0000)]
Simplify things significantly because GenericValue now has a single integer
field, of type APInt, instead of multiple integer fields. Also, get rid of
the special endianness code in StoreValueToMemory and LoadValueToMemory.
ExecutionEngine is always used to execute on the host platform so this is
now unnecessary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34946
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 6 Mar 2007 03:01:54 +0000 (03:01 +0000)]
Make GenericeValue into a struct with a union instead of just a union. This
allows an APInt value to be constructed. Remove all the native integer types
from the union. These are replaced with the single IntVal of type APInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34945
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 6 Mar 2007 03:00:17 +0000 (03:00 +0000)]
Test to ensure that data layout is generated correctly for host platform.
This is for PR1242.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34944
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 6 Mar 2007 02:30:46 +0000 (02:30 +0000)]
Use std::deque to manage loop queue inside LPPassManager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34943
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 6 Mar 2007 01:55:46 +0000 (01:55 +0000)]
Keep track of inherited analysis. For example, if a loop pass does not
preserve dominator info then it should update parent FPPassManager's
available analysis info to reflect this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34942
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 6 Mar 2007 01:06:16 +0000 (01:06 +0000)]
Add preparePassManager() hook. This allows each pass to check whether
current active pass manager is appropriate or not.
A loop pass may consider current LPPassManager in appropraite if loop
pass is not preserving analysis information that is used by other
passes managed by current LPPassManager. In such situation, loop pass
can pop current LPPassManager from the PMStack using this hook
and use new LPPassManager for itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34941
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 6 Mar 2007 00:59:59 +0000 (00:59 +0000)]
Switch PPC return lower to use an autogenerated CC description.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34940
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 5 Mar 2007 23:36:13 +0000 (23:36 +0000)]
Remove an unnecessary if statement and adjust indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34939
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 5 Mar 2007 23:09:45 +0000 (23:09 +0000)]
Add the emms intrinsic for MMX support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34938
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 5 Mar 2007 23:06:32 +0000 (23:06 +0000)]
Document the use of getValueType() more accurately, specifically explain
that the instruction opcode is added to the InstructionVal value and the
consequences of that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34937
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 5 Mar 2007 22:57:49 +0000 (22:57 +0000)]
Current pass manager, not the parent pass manager, assumes the role of
last user when one of the managed pass uses info provided by parent pass
manager.
This was exposed by LPPassManager work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34936
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 5 Mar 2007 22:51:08 +0000 (22:51 +0000)]
Add a test case for a particular udiv/select transform.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34935
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 5 Mar 2007 20:01:30 +0000 (20:01 +0000)]
Avoid constructing std::strings unless pass debugging is ON.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34933
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 5 Mar 2007 18:20:51 +0000 (18:20 +0000)]
Account for time consumed by releaseMemory() properly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34932
91177308-0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Mon, 5 Mar 2007 17:59:58 +0000 (17:59 +0000)]
Use init_array/fini_array sections for static contructors/destructors when the ABI is AAPCS.
Fix SingleSource/Regression/C/ConstructorDestructorAttributes test on arm-linux-gnueabi.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34931
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 5 Mar 2007 17:22:33 +0000 (17:22 +0000)]
The hack won't work on VS 2005, and it might not be needed anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34930
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhou Sheng [Mon, 5 Mar 2007 16:42:58 +0000 (16:42 +0000)]
Correct the calculation in APInt::logBase2().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34929
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 5 Mar 2007 09:21:11 +0000 (09:21 +0000)]
Credit self for Ada front-end.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34928
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 5 Mar 2007 08:39:58 +0000 (08:39 +0000)]
Testcase for handling of static constant declarations in EmitBIND_EXPR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34927
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 5 Mar 2007 08:34:35 +0000 (08:34 +0000)]
Testcase causing the Ada front-end to create bogus constructor fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34926
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 5 Mar 2007 08:20:48 +0000 (08:20 +0000)]
New directory for Ada testcases. Test handling of NON_LVALUE_EXPR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34925
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 5 Mar 2007 07:52:57 +0000 (07:52 +0000)]
This is the first major step of implementing PR1226. We now successfully
scalarrepl things down to elements, but mem2reg can't promote elements that
are memset/memcpy'd. Until then, the code is disabled "0 &&".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34924
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 5 Mar 2007 05:45:08 +0000 (05:45 +0000)]
Ensure 64-bit correctness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34923
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 5 Mar 2007 05:22:08 +0000 (05:22 +0000)]
Implement memoryLimit on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34922
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 5 Mar 2007 00:46:22 +0000 (00:46 +0000)]
Elminate tabs and improve comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34921
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 5 Mar 2007 00:11:19 +0000 (00:11 +0000)]
fix a subtle bug that caused an MSVC warning. Thanks to Jeffc for pointing this out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34920
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 5 Mar 2007 00:02:29 +0000 (00:02 +0000)]
Add some simplifications for demanded bits, this allows instcombine to turn:
define i64 @test(i64 %A, i32 %B) {
%tmp12 = zext i32 %B to i64 ; <i64> [#uses=1]
%tmp3 = shl i64 %tmp12, 32 ; <i64> [#uses=1]
%tmp5 = add i64 %tmp3, %A ; <i64> [#uses=1]
%tmp6 = and i64 %tmp5, 123 ; <i64> [#uses=1]
ret i64 %tmp6
}
into:
define i64 @test(i64 %A, i32 %B) {
%tmp6 = and i64 %A, 123 ; <i64> [#uses=1]
ret i64 %tmp6
}
This implements Transforms/InstCombine/add2.ll:test1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34919
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 5 Mar 2007 00:01:38 +0000 (00:01 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34918
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Mon, 5 Mar 2007 00:00:42 +0000 (00:00 +0000)]
Unbreak VC++ build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34917
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 23:33:19 +0000 (23:33 +0000)]
add a getSignBit method, elimiante virtual method from getBitMask()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34916
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 23:33:03 +0000 (23:33 +0000)]
fix 80 col violations, mark arrays static
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34915
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 23:16:36 +0000 (23:16 +0000)]
simplify some code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34914
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 20:40:38 +0000 (20:40 +0000)]
fold away addc nodes when we know there cannot be a carry-out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34913
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 20:40:06 +0000 (20:40 +0000)]
add a new node
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34912
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 20:39:47 +0000 (20:39 +0000)]
new testcase, corresponds to:
long long test(long long A, unsigned B) {
return (A + ((long long)B << 32));
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34911
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 20:08:45 +0000 (20:08 +0000)]
generalize
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34910
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 20:03:15 +0000 (20:03 +0000)]
canonicalize constants to the RHS of addc/adde. If nothing uses the carry out of
addc, turn it into add.
This allows us to compile:
long long test(long long A, unsigned B) {
return (A + ((long long)B << 32)) & 123;
}
into:
_test:
movl $123, %eax
andl 4(%esp), %eax
xorl %edx, %edx
ret
instead of:
_test:
xorl %edx, %edx
movl %edx, %eax
addl 4(%esp), %eax ;; add of zero
andl $123, %eax
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34909
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 20:01:46 +0000 (20:01 +0000)]
eliminate some ops if they have an undef RHS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34908
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 06:36:24 +0000 (06:36 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34906
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 06:13:52 +0000 (06:13 +0000)]
add missing braces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34905
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 04:50:21 +0000 (04:50 +0000)]
minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34904
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 4 Mar 2007 04:41:04 +0000 (04:41 +0000)]
Remove unneeded header file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34903
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 04:27:24 +0000 (04:27 +0000)]
Speed up -instcombine by 20% by avoiding a particularly expensive passmgr call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34902
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 04:20:48 +0000 (04:20 +0000)]
switch MarkAliveBlocks over to using SmallPtrSet instead of std::set, speeding
up simplifycfg by 20%
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34901
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 04:06:39 +0000 (04:06 +0000)]
Speed up Loop::isLCSSAForm by using a hash table instead of a sorted vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34900
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 04:04:43 +0000 (04:04 +0000)]
add iterator range version of ctor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34899
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 03:43:23 +0000 (03:43 +0000)]
make better use of LCSSA information in RewriteLoopExitValues. Before, we
would scan the entire loop body, then scan all users of instructions in the
loop, looking for users outside the loop. Now, since we know that the
loop is in LCSSA form, we know that any users outside the loop will be LCSSA
phi nodes. Just scan them.
This speeds up indvars significantly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34898
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 4 Mar 2007 01:25:35 +0000 (01:25 +0000)]
Guard further against APInt operations with operands of unequal bit width.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34897
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 01:00:28 +0000 (01:00 +0000)]
Implement PR1179/PR1232 and test/Transforms/IndVarsSimplify/loop_evaluate_[234].ll
This makes -indvars require and use LCSSA, updating it as appropriate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34896
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 4 Mar 2007 00:54:06 +0000 (00:54 +0000)]
New testcases for PR1179/PR1232.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34895
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 4 Mar 2007 00:45:50 +0000 (00:45 +0000)]
Get the version number for the LLVM from the autoconf/configure.ac file
when building the documentation for the web site.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34894
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 23:43:21 +0000 (23:43 +0000)]
Fix CodeGen/Generic/fpowi-promote.ll and PR1239
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34893
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 23:42:50 +0000 (23:42 +0000)]
New testcase for PR1239
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34892
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 22:48:48 +0000 (22:48 +0000)]
Make RewriteLoopExitValues far less nested by using continue in the loop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34891
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 19:21:38 +0000 (19:21 +0000)]
Add an expand action for ISD label which just deletes the label.
This "fixes" PR1238.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34890
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 18:29:16 +0000 (18:29 +0000)]
Remove unnecessary #include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34889
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 18:21:44 +0000 (18:21 +0000)]
1. Handle errors around the ModuleProvider. This is necessary since it is
reading bytecode.
2. The interpreter can delete the ModuleProvider and replace it with
another so don't depend on it being around after the EE is created.
3. Don't just run llvm_shutdown on exit but actually delete the EE as well.
This cleans up a vast amount of memory (but not all) that EE retained
through exit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34888
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 18:19:18 +0000 (18:19 +0000)]
Deal with error handling better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34887
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 18:18:11 +0000 (18:18 +0000)]
Make the creation functions take an error string. This will help the
ExecutionEngine report errors on creation (like bytecode stuff) and also
help to get rid of exception handling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34886
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 16:33:33 +0000 (16:33 +0000)]
Make sure that when we store a value it is masked to its correct bit
width. This helps CBE work with non-standard integer bit widths.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34885
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 08:38:04 +0000 (08:38 +0000)]
Complete the APIntification of the interpreter. All asserts for > 64 bits
have been removed and dealt with. The interpreter should now be able to
execute any LLVM program using any bit width.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34884
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 08:36:29 +0000 (08:36 +0000)]
Avoid memory leakage by having caller construct the APInt for the
destination value of LoadValueFromMemory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34883
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 08:35:14 +0000 (08:35 +0000)]
Require the destination GlobalValue for LoadValueFromMemory to be passed
in as a parameter instead of returned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34882
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 08:34:02 +0000 (08:34 +0000)]
Regularize the interface for conversion functions to/from float/double.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34881
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 08:32:46 +0000 (08:32 +0000)]
Fix constant folding of fp->int bitcast for vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34880
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 07:36:44 +0000 (07:36 +0000)]
Add APIntVal as a possible GenericeValue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34879
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 3 Mar 2007 06:32:37 +0000 (06:32 +0000)]
Only propagate IsKill if the last use is a kill.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34878
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 06:22:22 +0000 (06:22 +0000)]
Implement APInt support for the binary operators.
Move the getConstantExpr function towards the end of the file so we don't
need a dozen forward declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34877
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 06:19:55 +0000 (06:19 +0000)]
1. Have the ExecutionContext keep track of the APInt's allocated and
ensure they are cleaned up when the stack frame exits.
2. Move a function to the Execution.cpp file where it belongs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34876
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Sat, 3 Mar 2007 06:18:18 +0000 (06:18 +0000)]
http://llvm.org/bugs/show_bug.cgi?id=1237
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34875
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 06:18:03 +0000 (06:18 +0000)]
Implement loading and storing of APInt values from memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34874
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 06:17:23 +0000 (06:17 +0000)]
Make getNumWords public so that those using getRawData stand a chance of
not reading beyond the end of the buffer returned.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34873
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 05:37:23 +0000 (05:37 +0000)]
Add names for some of the operators. This is needed for the macros in
the Interpreter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34872
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 3 Mar 2007 05:29:51 +0000 (05:29 +0000)]
Emit low/high immediate loads properly for Linux/PPC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34871
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 05:27:34 +0000 (05:27 +0000)]
my recent change caused a failure in a bswap testcase, because it changed
the order that instcombine processed instructions in the testcase. The end
result is that instcombine finished with:
define i16 @test1(i16 %a) {
%tmp = zext i16 %a to i32 ; <i32> [#uses=2]
%tmp21 = lshr i32 %tmp, 8 ; <i32> [#uses=1]
%tmp5 = shl i32 %tmp, 8 ; <i32> [#uses=1]
%tmp.upgrd.32 = or i32 %tmp21, %tmp5 ; <i32> [#uses=1]
%tmp.upgrd.3 = trunc i32 %tmp.upgrd.32 to i16 ; <i16> [#uses=1]
ret i16 %tmp.upgrd.3
}
which can't get matched as a bswap.
This patch makes instcombine more sophisticated about removing truncating
casts, allowing it to turn this into:
define i16 @test2(i16 %a) {
%tmp211 = lshr i16 %a, 8
%tmp52 = shl i16 %a, 8
%tmp.upgrd.323 = or i16 %tmp211, %tmp52
ret i16 %tmp.upgrd.323
}
which then matches as bswap. This fixes bswap.ll and implements
InstCombine/cast2.ll:test[12]. This also implements cast elimination of
add/sub.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34870
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 05:24:06 +0000 (05:24 +0000)]
new testcase: instcombine should remove all the casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34869
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 3 Mar 2007 03:14:40 +0000 (03:14 +0000)]
Translate bit operations to English.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34868
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 02:27:02 +0000 (02:27 +0000)]
instcombine doesn't do CSE, simplify unrelated detail
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34867
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 3 Mar 2007 02:18:00 +0000 (02:18 +0000)]
Watch out for cases like this:
entry (0x8b056f0, LLVM BB @0x8b01b30, ID#0):
Live Ins: %r0 %r1 %r2 %r3
%reg1032 = tMOVrr %r3<kill>
%reg1033 = tMOVri8 1
%reg1034 = tMOVri8 0
tCMPi8 %reg1029<kill>, 0
tBcc mbb<entry,0x8b06a10>, 0
Successors according to CFG: 0x8b06980 0x8b06a10
entry (0x8b06980, LLVM BB @0x8b01b30, ID#12):
Predecessors according to CFG: 0x8b056f0
%reg1036 = tMOVrr %reg1034<kill>
Successors according to CFG: 0x8b06a10
entry (0x8b06a10, LLVM BB @0x8b01b30, ID#13):
Predecessors according to CFG: 0x8b056f0 0x8b06980
%reg1024<dead> = tMOVrr %reg1030<kill>
...
reg1030 and r1 have already been joined. When reg1024 and reg1030 are joined,
r1 live range from function entry to the tMOVrr instruction are dead. Eliminate
r1 from the livein set of the entry BB, not the BB where the copy is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34866
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 3 Mar 2007 02:04:50 +0000 (02:04 +0000)]
add a top-level iteration loop to instcombine. This means that it will never
finish without combining something it is capable of.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34865
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 00:48:31 +0000 (00:48 +0000)]
APIntify this pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34863
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 3 Mar 2007 00:24:39 +0000 (00:24 +0000)]
Add isPositive for symmetry with isNegative.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34862
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:51:25 +0000 (23:51 +0000)]
Finally get this patch right :)
Replace expensive getZExtValue() == 0 calls with isZero() calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34861
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:37:53 +0000 (23:37 +0000)]
Dang, I've done that twice now! Undo previous commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34860
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:35:28 +0000 (23:35 +0000)]
Use more efficient test for one value in a ConstantInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34859
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:31:34 +0000 (23:31 +0000)]
Guard against huge loop trip counts in an APInt safe way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34858
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 2 Mar 2007 23:16:35 +0000 (23:16 +0000)]
X86-64 VACOPY needs custom expansion. va_list is a struct { i32, i32, i8*, i8* }.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34857
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:15:21 +0000 (23:15 +0000)]
Make sure debug code is not evaluated in non-debug case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34856
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:05:28 +0000 (23:05 +0000)]
1. Sort switch cases using APInt safe comparison.
2. Make sure debug output of APInt values is safe for all bit widths.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34855
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:03:17 +0000 (23:03 +0000)]
Use APInt safe isOne() method on ConstantInt instead of getZExtValue()==1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34854
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 23:01:14 +0000 (23:01 +0000)]
Make sorting of ConstantInt be APInt clean through use of ult function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34853
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 2 Mar 2007 22:39:11 +0000 (22:39 +0000)]
Fix ashr for bitwidths > 64. This is now validated up to 1024 bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34852
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Fri, 2 Mar 2007 22:19:41 +0000 (22:19 +0000)]
Fix uninitialized use of variable. Remove tabs and fix identation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34850
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Fri, 2 Mar 2007 21:50:27 +0000 (21:50 +0000)]
Simplify things
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34849
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 Mar 2007 21:28:56 +0000 (21:28 +0000)]
Fix a significant algorithm problem with the instcombine worklist. removing
a value from the worklist required scanning the entire worklist to remove all
entries. We now use a combination map+vector to prevent duplicates from
happening and prevent the scan. This speeds up instcombine on a large file
from the llvm-gcc bootstrap from 189.7s to 4.84s in a debug build and from
5.04s to 1.37s in a release build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34848
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 Mar 2007 19:59:19 +0000 (19:59 +0000)]
minor cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34846
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 2 Mar 2007 18:16:29 +0000 (18:16 +0000)]
Fix PR1234 by working around a compiler bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34845
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 2 Mar 2007 10:43:16 +0000 (10:43 +0000)]
Mark dead def as unused.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34844
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 2 Mar 2007 10:41:15 +0000 (10:41 +0000)]
Dead live-in detection bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34843
91177308-0d34-0410-b5e6-
96231b3b80d8