oota-llvm.git
17 years agoAccount for time consumed by releaseMemory() properly.
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

17 years agoUse init_array/fini_array sections for static contructors/destructors when the ABI...
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

17 years agoThe hack won't work on VS 2005, and it might not be needed anyway.
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

17 years agoCorrect the calculation in APInt::logBase2().
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

17 years agoCredit self for Ada front-end.
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

17 years agoTestcase for handling of static constant declarations in EmitBIND_EXPR.
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

17 years agoTestcase causing the Ada front-end to create bogus constructor fields.
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

17 years agoNew directory for Ada testcases. Test handling of NON_LVALUE_EXPR.
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

17 years agoThis is the first major step of implementing PR1226. We now successfully
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

17 years agoEnsure 64-bit correctness.
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

17 years agoImplement memoryLimit on Windows.
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

17 years agoElminate tabs and improve comments.
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

17 years agofix a subtle bug that caused an MSVC warning. Thanks to Jeffc for pointing this...
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

17 years agoAdd some simplifications for demanded bits, this allows instcombine to turn:
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

17 years agonew testcase
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

17 years agoUnbreak VC++ build.
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

17 years agoadd a getSignBit method, elimiante virtual method from getBitMask()
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

17 years agofix 80 col violations, mark arrays static
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

17 years agosimplify some code
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

17 years agofold away addc nodes when we know there cannot be a carry-out.
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

17 years agoadd a new node
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

17 years agonew testcase, corresponds to:
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

17 years agogeneralize
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

17 years agocanonicalize constants to the RHS of addc/adde. If nothing uses the carry out of
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

17 years agoeliminate some ops if they have an undef RHS
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

17 years agofix typo
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

17 years agoadd missing braces
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

17 years agominor cleanups
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

17 years agoRemove unneeded header file.
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

17 years agoSpeed up -instcombine by 20% by avoiding a particularly expensive passmgr call.
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

17 years agoswitch MarkAliveBlocks over to using SmallPtrSet instead of std::set, speeding
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

17 years agoSpeed up Loop::isLCSSAForm by using a hash table instead of a sorted vector.
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

17 years agoadd iterator range version of ctor.
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

17 years agomake better use of LCSSA information in RewriteLoopExitValues. Before, we
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

17 years agoGuard further against APInt operations with operands of unequal bit width.
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

17 years agoImplement PR1179/PR1232 and test/Transforms/IndVarsSimplify/loop_evaluate_[234].ll
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

17 years agoNew testcases for PR1179/PR1232.
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

17 years agoGet the version number for the LLVM from the autoconf/configure.ac file
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

17 years agoFix CodeGen/Generic/fpowi-promote.ll and PR1239
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

17 years agoNew testcase for PR1239
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

17 years agoMake RewriteLoopExitValues far less nested by using continue in the loop
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

17 years agoAdd an expand action for ISD label which just deletes the label.
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

17 years agoRemove unnecessary #include.
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

17 years ago1. Handle errors around the ModuleProvider. This is necessary since it is
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

17 years agoDeal with error handling better.
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

17 years agoMake the creation functions take an error string. This will help the
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

17 years agoMake sure that when we store a value it is masked to its correct bit
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

17 years agoComplete the APIntification of the interpreter. All asserts for > 64 bits
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

17 years agoAvoid memory leakage by having caller construct the APInt for the
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

17 years agoRequire the destination GlobalValue for LoadValueFromMemory to be passed
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

17 years agoRegularize the interface for conversion functions to/from float/double.
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

17 years agoFix constant folding of fp->int bitcast for vectors.
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

17 years agoAdd APIntVal as a possible GenericeValue.
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

17 years agoOnly propagate IsKill if the last use is a kill.
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

17 years agoImplement APInt support for the binary operators.
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

17 years ago1. Have the ExecutionContext keep track of the APInt's allocated and
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

17 years agohttp://llvm.org/bugs/show_bug.cgi?id=1237
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

17 years agoImplement loading and storing of APInt values from memory.
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

17 years agoMake getNumWords public so that those using getRawData stand a chance of
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

17 years agoAdd names for some of the operators. This is needed for the macros in
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

17 years agoEmit low/high immediate loads properly for Linux/PPC.
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

17 years agomy recent change caused a failure in a bswap testcase, because it changed
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

17 years agonew testcase: instcombine should remove all the casts.
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

17 years agoTranslate bit operations to English.
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

17 years agoinstcombine doesn't do CSE, simplify unrelated detail
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

17 years agoWatch out for cases like this:
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

17 years agoadd a top-level iteration loop to instcombine. This means that it will never
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

17 years agoAPIntify this pass.
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

17 years agoAdd isPositive for symmetry with isNegative.
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

17 years agoFinally get this patch right :)
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

17 years agoDang, I've done that twice now! Undo previous commit.
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

17 years agoUse more efficient test for one value in a ConstantInt.
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

17 years agoGuard against huge loop trip counts in an APInt safe way.
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

17 years agoX86-64 VACOPY needs custom expansion. va_list is a struct { i32, i32, i8*, i8* }.
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

17 years agoMake sure debug code is not evaluated in non-debug case.
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

17 years ago1. Sort switch cases using APInt safe comparison.
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

17 years agoUse APInt safe isOne() method on ConstantInt instead of getZExtValue()==1
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

17 years agoMake sorting of ConstantInt be APInt clean through use of ult function.
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

17 years agoFix ashr for bitwidths > 64. This is now validated up to 1024 bits.
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

17 years agoFix uninitialized use of variable. Remove tabs and fix identation.
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

17 years agoSimplify things
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

17 years agoFix a significant algorithm problem with the instcombine worklist. removing
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

17 years agominor cleanup
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

17 years agoFix PR1234 by working around a compiler bug.
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

17 years agoMark dead def as unused.
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

17 years agoDead live-in detection bug.
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

17 years agoAdd a new test case.
Evan Cheng [Fri, 2 Mar 2007 10:37:19 +0000 (10:37 +0000)]
Add a new test case.

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

17 years ago- Keep track all def and uses of stack slot available in register.
Evan Cheng [Fri, 2 Mar 2007 08:52:00 +0000 (08:52 +0000)]
- Keep track all def and uses of stack slot available in register.
- Available value use may be deleted (e.g. noop move).

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

17 years agotestcase for PR1233
Chris Lattner [Fri, 2 Mar 2007 07:29:59 +0000 (07:29 +0000)]
testcase for PR1233

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

17 years agoInvalidate last use of a reused register if the use is a deleted noop copy.
Evan Cheng [Fri, 2 Mar 2007 05:41:42 +0000 (05:41 +0000)]
Invalidate last use of a reused register if the use is a deleted noop copy.

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

17 years agoargument lowering should copy from the vreg shadows of live-in arguments
Chris Lattner [Fri, 2 Mar 2007 05:12:29 +0000 (05:12 +0000)]
argument lowering should copy from the vreg shadows of live-in arguments
passed in registers, not directly from the pregs themselves.

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

17 years agoadd a note
Chris Lattner [Fri, 2 Mar 2007 05:04:52 +0000 (05:04 +0000)]
add a note

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

17 years agoFix a typo.
Owen Anderson [Fri, 2 Mar 2007 05:03:07 +0000 (05:03 +0000)]
Fix a typo.

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

17 years agoUse a better algorithm for rounding sqrt results. Change the FIXME about
Reid Spencer [Fri, 2 Mar 2007 04:21:55 +0000 (04:21 +0000)]
Use a better algorithm for rounding sqrt results. Change the FIXME about
this to a NOTE: because pari/gp results start to get rounded incorrectly
after 192 bits of precision. APInt and pari/gp never differ by more than
1, but APInt is more accurate because it does not lose precision after 192
bits as does pari/gp.

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

17 years agoImplement unionWith.
Nick Lewycky [Fri, 2 Mar 2007 03:33:05 +0000 (03:33 +0000)]
Implement unionWith.

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

17 years agoswitch the inliner from being recursive to being iterative.
Chris Lattner [Fri, 2 Mar 2007 03:11:20 +0000 (03:11 +0000)]
switch the inliner from being recursive to being iterative.

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

17 years agoFix an unequal bitwidth issue.
Reid Spencer [Fri, 2 Mar 2007 02:59:25 +0000 (02:59 +0000)]
Fix an unequal bitwidth issue.

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

17 years agogrammaro
Chris Lattner [Fri, 2 Mar 2007 02:57:34 +0000 (02:57 +0000)]
grammaro

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

17 years agoMake it 64-bit safe.
Evan Cheng [Fri, 2 Mar 2007 02:31:37 +0000 (02:31 +0000)]
Make it 64-bit safe.

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

17 years agoAdd a FIXME
Reid Spencer [Fri, 2 Mar 2007 02:01:34 +0000 (02:01 +0000)]
Add a FIXME

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