Reid Spencer [Tue, 26 Apr 2005 20:41:16 +0000 (20:41 +0000)]
Use the declare syntax not the call syntax for intrinsic prototypes so
the uninitiated reader is not confused.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21572
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 26 Apr 2005 20:03:33 +0000 (20:03 +0000)]
don't let Reid build void*'s :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21571
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 19:55:57 +0000 (19:55 +0000)]
Fix some bugs found by running on llvm-test:
* MemCpyOptimization can only be optimized if the 3rd and 4th arguments are
constants and we weren't checking for that.
* The result of llvm.memcpy (and llvm.memmove) is void* not sbyte*, put in
a cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21570
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 19:13:17 +0000 (19:13 +0000)]
Changes From Review Feedback:
* Have the SimplifyLibCalls pass acquire the TargetData and pass it down to
the optimization classes so they can use it to make better choices for
the signatures of functions, etc.
* Rearrange the code a little so the utility functions are closer to their
usage and keep the core of the pass near the top of the files.
* Adjust the StrLen pass to get/use the correct prototype depending on the
TargetData::getIntPtrType() result. The result of strlen is size_t which
could be either uint or ulong depending on the platform.
* Clean up some coding nits (cast vs. dyn_cast, remove redundant items from
a switch, etc.)
* Implement the MemMoveOptimization as a twin of MemCpyOptimization (they
only differ in name).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21569
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 19:05:51 +0000 (19:05 +0000)]
Add a test case for MemMove.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21568
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 19:04:46 +0000 (19:04 +0000)]
Result of strlen is size_t which is either uint or ulong, not int.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21567
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 26 Apr 2005 14:48:28 +0000 (14:48 +0000)]
Make interval partition print correctly, patch contributed by
Vladimir Prus!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21566
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 26 Apr 2005 14:40:41 +0000 (14:40 +0000)]
Fix the compile failures from last night.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21565
91177308-0d34-0410-b5e6-
96231b3b80d8
Duraid Madina [Tue, 26 Apr 2005 09:42:50 +0000 (09:42 +0000)]
constmul bugfix: multiply by 27611 was broken
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21564
91177308-0d34-0410-b5e6-
96231b3b80d8
Duraid Madina [Tue, 26 Apr 2005 08:43:47 +0000 (08:43 +0000)]
clean up the code! (oops) lots more cleaning left, however.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21563
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 07:45:18 +0000 (07:45 +0000)]
* Merge get_GVInitializer and getCharArrayLength into a single function
named getConstantStringLength. This is the common part of StrCpy and
StrLen optimizations and probably several others, yet to be written. It
performs all the validity checks for looking at constant arrays that are
supposed to be null-terminated strings and then computes the actual
length of the string.
* Implement the MemCpyOptimization class. This just turns memcpy of 1, 2, 4
and 8 byte data blocks that are properly aligned on those boundaries into
a load and a store. Much more could be done here but alignment
restrictions and lack of knowledge of the target instruction set prevent
use from doing significantly more. That will have to be delegated to the
code generators as they lower llvm.memcpy calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21562
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 07:40:40 +0000 (07:40 +0000)]
Add a new test case for the llvm.memcpy simplification case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21561
91177308-0d34-0410-b5e6-
96231b3b80d8
Duraid Madina [Tue, 26 Apr 2005 07:23:02 +0000 (07:23 +0000)]
* Add code to reduce multiplies by constant integers to shifts, adds and
subtracts. This is a very rough and nasty implementation of Lefevre's
"pattern finding" algorithm. With a few small changes though, it should
end up beating most other methods in common use, regardless of the size
of the constant (currently, it's often one or two shifts worse)
TODO: rewrite it so it's not hideously ugly (this is a translation from
perl, which doesn't help ;)
bypass most of it for multiplies by 2^n+1
(eventually) teach it that some combinations of shift+add are
cheaper than others (e.g. shladd on ia64, scaled adds on alpha)
get it to try multiple booth encodings in search of the cheapest
routine
make it work for negative constants
This is hacked up as a DAG->DAG transform, so once I clean it up I hope
it'll be pulled out of here and put somewhere else. The only thing backends
should really have to worry about for now is where to draw the line
between using this code vs. going ahead and doing an integer multiply
anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21560
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 05:24:00 +0000 (05:24 +0000)]
* Implement StrLenOptimization
* Factor out commonalities between StrLenOptimization and StrCatOptimization
* Make sure that signatures return sbyte* not void*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21559
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 05:22:38 +0000 (05:22 +0000)]
* Add a test case for StrLenOptimization
* Rename ExitInMain and StrCat tests so they don't have the date the
regression was entered since they are feature tests, not regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21558
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 03:26:15 +0000 (03:26 +0000)]
Incorporate feedback from Chris:
* Change signatures of OptimizeCall and ValidateCalledFunction so they are
non-const, allowing the optimization object to be modified. This is in
support of caching things used across multiple calls.
* Provide two functions for constructing and caching function types
* Modify the StrCatOptimization to cache Function objects for strlen and
llvm.memcpy so it doesn't regenerate them on each call site. Make sure
these are invalidated each time we start the pass.
* Handle both a GEP Instruction and a GEP ConstantExpr
* Add additional checks to make sure we really are dealing with an arary of
sbyte and that all the element initializers are ConstantInt or
ConstantExpr that reduce to ConstantInt.
* Make sure the GlobalVariable is constant!
* Don't use ConstantArray::getString as it can fail and it doesn't give us
the right thing. We must check for null bytes in the middle of the array.
* Use llvm.memcpy instead of memcpy so we can factor alignment into it.
* Don't use void* types in signatures, replace with sbyte* instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21555
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Tue, 26 Apr 2005 02:57:49 +0000 (02:57 +0000)]
Add SimplyLibCalls.cpp to VC++ build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21554
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 26 Apr 2005 02:33:25 +0000 (02:33 +0000)]
Fix RUN: line to not always pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21553
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 26 Apr 2005 01:18:33 +0000 (01:18 +0000)]
Fold (X > -1) | (Y > -1) --> (X&Y > -1)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21552
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 21:20:38 +0000 (21:20 +0000)]
Changes due to code review and new implementation:
* Don't use std::string for the function names, const char* will suffice
* Allow each CallOptimizer to validate the function signature before
doing anything
* Repeatedly loop over the functions until an iteration produces
no more optimizations. This allows one optimization to insert a
call that is optimized by another optimization.
* Implement the ConstantArray portion of the StrCatOptimization
* Provide a template for the MemCpyOptimization
* Make ExitInMainOptimization split the block, not delete everything
after the return instruction.
(This covers revision 1.3 and 1.4, as the 1.3 comments were botched)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21548
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 21:20:28 +0000 (21:20 +0000)]
implement some more logical compares with constants, so that:
int foo1(int x, int y) {
int t1 = x >= 0;
int t2 = y >= 0;
return t1 & t2;
}
int foo2(int x, int y) {
int t1 = x == -1;
int t2 = y == -1;
return t1 & t2;
}
produces:
_foo1:
or r2, r4, r3
srwi r2, r2, 31
xori r3, r2, 1
blr
_foo2:
and r2, r4, r3
addic r2, r2, 1
li r2, 0
addze r3, r2
blr
instead of:
_foo1:
srwi r2, r4, 31
xori r2, r2, 1
srwi r3, r3, 31
xori r3, r3, 1
and r3, r2, r3
blr
_foo2:
addic r2, r4, 1
li r2, 0
addze r2, r2
addic r3, r3, 1
li r3, 0
addze r3, r3
and r3, r2, r3
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21547
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 21:11:48 +0000 (21:11 +0000)]
Lots of changes based on review and new functionality:
* Use a
\1a
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21546
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 21:08:34 +0000 (21:08 +0000)]
Update the test case to handle a few more (degenerate) cases and remove
the restriction that it is an XFAIL because it now passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21545
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 21:03:25 +0000 (21:03 +0000)]
Codegen x < 0 | y < 0 as (x|y) < 0. This allows us to compile this to:
_foo:
or r2, r4, r3
srwi r3, r2, 31
blr
instead of:
_foo:
srwi r2, r4, 31
srwi r3, r3, 31
or r3, r2, r3
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21544
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 20:50:33 +0000 (20:50 +0000)]
Make dominates(A,B) work with post dominators. Patch contributed by
Naveen Neelakantam, thanks!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21543
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Mon, 25 Apr 2005 20:36:56 +0000 (20:36 +0000)]
Added question about turning off all optimizations. I think this has been asked once or twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21542
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 20:17:30 +0000 (20:17 +0000)]
implement getelementptr.ll:test10
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21541
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 20:17:16 +0000 (20:17 +0000)]
rename fn
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21540
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 20:17:00 +0000 (20:17 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21539
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 19:16:31 +0000 (19:16 +0000)]
Correctly handle global-argument aliases induced in main
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21537
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 19:16:17 +0000 (19:16 +0000)]
Don't mess up SCC traversal when a node has null edges out of it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21536
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 17:34:15 +0000 (17:34 +0000)]
document 'opaque' types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21535
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 15:47:57 +0000 (15:47 +0000)]
Add feedback from Vikram
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21534
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 15:40:35 +0000 (15:40 +0000)]
Make sure the target buffer is null terminated so we don't blow up
strcat when its called.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21533
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 07:29:30 +0000 (07:29 +0000)]
A test case for testing the StrCatOptimizer, currently XFAILed everywhere.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21532
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 03:59:26 +0000 (03:59 +0000)]
Post-Review Cleanup:
* Fix comments at top of file
* Change algorithm for running the call optimizations from n*n to something
closer to n.
* Use a hash_map to store and lookup the optimizations since there will
eventually (or potentially) be a large number of them. This gets lookup
based on the name of the function to O(1). Each CallOptimizer now has a
std::string member named func_name that tracks the name of the function
that it applies to. It is this string that is entered into the hash_map
for fast comparison against the function names encountered in the module.
* Cleanup some style issues pertaining to iterator invalidation
* Don't pass the Function pointer to the OptimizeCall function because if
the optimization needs it, it can get it from the CallInst passed in.
* Add the skeleton for a new CallOptimizer, StrCatOptimizer which will
eventually replace strcat's of constant strings with direct copies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21526
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 03:18:19 +0000 (03:18 +0000)]
Use the %name rather than the "name" format so those familiar with the
llvm-dis output don't go blind.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21525
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 02:55:55 +0000 (02:55 +0000)]
Shut GCC 4.0 up about classes that have virtual functions but a non-virtual
destructor. Just add the do-nothing virtual destructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21524
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 02:54:00 +0000 (02:54 +0000)]
Declare a function to create the SimplifyLibCalls pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21523
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 02:53:12 +0000 (02:53 +0000)]
A new pass to provide specific optimizations for certain well-known library
calls. The pass visits all external functions in the module and determines
if such function calls can be optimized. The optimizations are specific to
the library calls involved. This initial version only optimizes calls to
exit(3) when they occur in main(): it changes them to ret instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21522
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 02:50:08 +0000 (02:50 +0000)]
A test case for the the ExitInMain libcall simplification.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21521
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 01:01:35 +0000 (01:01 +0000)]
Older compilers won't like the inline virtual destructor in the header file
so we put the destructor in Pass.cpp and make it non-inline.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21520
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 25 Apr 2005 00:38:52 +0000 (00:38 +0000)]
fix some bugs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21515
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 25 Apr 2005 00:31:53 +0000 (00:31 +0000)]
Fix a thinko in the documentation of the splitBasicBlock method. The branch
instruction is added to the original block, not the new block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21513
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 24 Apr 2005 22:27:20 +0000 (22:27 +0000)]
Shut GCC 4.0 up about classes with virtual functions but no virtual
destructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21510
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 24 Apr 2005 22:20:32 +0000 (22:20 +0000)]
Shut GCC 4.0 up when it complains about classes with virtual functions that
don't have virtual destructors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21507
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 24 Apr 2005 20:56:18 +0000 (20:56 +0000)]
Make this readable for newbies and those who can only understand one set of
grammar rules for the English language.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21503
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 24 Apr 2005 17:46:58 +0000 (17:46 +0000)]
extract has been renamed to llvm-extract to avoid conflicting with another tool
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21501
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 17:46:05 +0000 (17:46 +0000)]
Eliminate cases where we could << by 64, which is undefined in C.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21500
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 24 Apr 2005 17:43:41 +0000 (17:43 +0000)]
There are still uses for spaces in Makefiles -- to make text line up together,
regardless of the tab size/stop settings on the developer side
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21499
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 24 Apr 2005 17:36:05 +0000 (17:36 +0000)]
extract has been renamed to llvm-extract to avoid conflicting with another tool
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21498
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 24 Apr 2005 17:09:19 +0000 (17:09 +0000)]
elisp code to help with LLVM code standards compliance
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21497
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 24 Apr 2005 17:05:04 +0000 (17:05 +0000)]
.vimrc file to aid in LLVM coding standards conformance
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21496
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 07:30:14 +0000 (07:30 +0000)]
Implement xor.ll:test21: select (not C), A, B -> select C, B, A
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21495
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 07:28:53 +0000 (07:28 +0000)]
Test that xor/select are folded into a select with inverted operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21494
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 07:28:37 +0000 (07:28 +0000)]
Allow these methods to take a generic Value* to simplify clients. Use
const_cast instead of c casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21493
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 07:28:04 +0000 (07:28 +0000)]
allow these to take a generic Value*
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21492
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 06:59:08 +0000 (06:59 +0000)]
Use getPrimitiveSizeInBits() instead of getPrimitiveSize()*8
Completely rework the 'setcc (cast x to larger), y' code. This code has
the advantage of implementing setcc.ll:test19 (being more general than
the previous code) and being correct in all cases.
This allows us to unxfail 2004-11-27-SetCCForCastLargerAndConstant.ll,
and close PR454.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21491
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 06:55:40 +0000 (06:55 +0000)]
unxfail this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21490
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 24 Apr 2005 06:55:33 +0000 (06:55 +0000)]
add a new testcase which occurs in 181.mcf
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21489
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sat, 23 Apr 2005 22:35:26 +0000 (22:35 +0000)]
* The aesthetic police is on patrol!!...
* ... but it wasn't so busy as to not smell the roses and doxygenify comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21487
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 22:20:22 +0000 (22:20 +0000)]
Add a helper method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21486
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 22:01:39 +0000 (22:01 +0000)]
Fix a bug in my previous checkin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21485
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 22:00:26 +0000 (22:00 +0000)]
This file is never referenced
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21484
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 22:00:09 +0000 (22:00 +0000)]
Add a method, remove last use of Type.def
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21483
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 21:59:42 +0000 (21:59 +0000)]
add a method, remove a dead #include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21482
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 21:59:11 +0000 (21:59 +0000)]
Types.def is going away
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21481
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 23 Apr 2005 21:38:35 +0000 (21:38 +0000)]
Eliminate tabs and trailing spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21480
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Sat, 23 Apr 2005 21:26:11 +0000 (21:26 +0000)]
Eliminate tabs and trailing spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21479
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 21:11:05 +0000 (21:11 +0000)]
Propagate eq sets through the bu graphs to the cbu and eq graphs, fixing
a crash of the sfv on 188.ammp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21478
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 17:27:36 +0000 (17:27 +0000)]
add a bunch of documentation about the LLVM type resolution machinery
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21475
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 23 Apr 2005 17:24:33 +0000 (17:24 +0000)]
Make the CBackend actually get included in llc by using USEDLIBS instead of
USEDLIB as the variable to which "CBackend" is appended. The surrounding
if clause is safe because currently the configure script ensures that the
CBackend target is always added to TARGETS_TO_BUILD. By using a non-hard
coded construct in the makefile, we gain uniformity and the ability to
change the default set of targets by only changing the configure script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21474
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 16:10:52 +0000 (16:10 +0000)]
make an advanced topics section, move symtab to it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21473
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 16:00:27 +0000 (16:00 +0000)]
This is not needed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21472
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 15:55:18 +0000 (15:55 +0000)]
add a search box for the documentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21471
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 15:31:55 +0000 (15:31 +0000)]
Generalize the setcc -> PHI and Select folding optimizations to work with
any constant RHS, not just a constant integer RHS. This implements
select.ll:test17
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21470
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 15:31:03 +0000 (15:31 +0000)]
add a new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21469
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 23 Apr 2005 14:36:22 +0000 (14:36 +0000)]
Always enable the C backend. This fixes a *vast* number of failures on the
testers last night, as llc was not getting the cbe linked in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21468
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Sat, 23 Apr 2005 00:11:21 +0000 (00:11 +0000)]
Add method to return the type this type will be promoted to if it is
passed through a variable argument function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21462
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 20:27:33 +0000 (20:27 +0000)]
Mention the --enable-targets= option to configure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21459
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 22 Apr 2005 19:13:22 +0000 (19:13 +0000)]
* Order #includes as per style guide
* Combine multiple ``std::cerr <<'' statements into one for simplicity
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21458
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 22 Apr 2005 18:06:01 +0000 (18:06 +0000)]
Convert tabs to spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21457
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 22 Apr 2005 18:02:52 +0000 (18:02 +0000)]
Hyphenate the adjective `n-bit' when used to describe values and processors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21456
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 22 Apr 2005 18:00:34 +0000 (18:00 +0000)]
Build the `Skeleton' target when building "all" targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21455
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 17:58:03 +0000 (17:58 +0000)]
Document the --enable-targets= feature of the configure script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21454
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Fri, 22 Apr 2005 17:56:01 +0000 (17:56 +0000)]
Silence gcc-4.0.0 warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21453
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 22 Apr 2005 17:54:37 +0000 (17:54 +0000)]
Convert tabs to spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21452
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 17:32:05 +0000 (17:32 +0000)]
Don't always build CBackend and Skeleton. Make use of the TARGETS_TO_BUILD
parameter instead which will correctly list the set of targets to be built.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21451
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 17:20:11 +0000 (17:20 +0000)]
Implement the --enable-targets= feature of the configure script. The make
variable TARGETS_TO_BUILD is used to determine which targets in lib/Target
are built and which libraries are linked into llc. This effectively
implements the feature. One item remains: disabling targets in the dejagnu
test suite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21450
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 17:14:14 +0000 (17:14 +0000)]
Two changes:
1. Get rid of TOOLLINKOPTS as it is a hold over from llvm-test and only
used to communicate additional libraries to the linker. The *standard*
way to do that is with the LIBS variable which this change supports.
2. Allow the TARGETS_TO_BUILD variable to be set from the configuration
substitution. This is the result of the --enable-target= parameter to
the configure script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21449
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 17:06:18 +0000 (17:06 +0000)]
Make sure the CBackend is always a target that is built.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21448
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 17:02:18 +0000 (17:02 +0000)]
Consolidate the target selection options into a single option,
--enable-target which can take values "all", "host-only" or a comma
separated list of target names (alpha,ia64,powerpc,skeleton,sparc,x86)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21447
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Fri, 22 Apr 2005 13:35:18 +0000 (13:35 +0000)]
keep track of max depth stats
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21446
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 22 Apr 2005 07:27:28 +0000 (07:27 +0000)]
First step in avoiding compilation/usage of non-relevant targets. New
options have been added to the configure script that control which targets
will be used. The options are:
--enable-target-this (default=disabled)
This will specify that the target corresponding to the build host is
the target that will be compiled/used. You can't use this with any of
the other options (they'll be ignored). This is what most people want.
--disable-target-x86 (default=enabled)
This will prevent the X86 target(s) from being compiled/used.
--disable-target-sparc (default=enabled)
This will prevent both SparcV8 and SparcV9 from being compiled/used.
--disable-target-powerpc (default=enabled)
This will prevent the PowerPC target from being compiled/used.
--disable-target-alpha (default=enabled)
This will prevent the Alpha target from being compiled/used.
--disable-target-ia64 (default=enabled)
This will prevent the IA64 target from being compiled/used.
Note that without any of these options, the default behavior is to build
all targets, as is the current practice.
All these options do is set up the substititution variable TARGETS_TO_BUILD
which contains the targets that should be compiled/used. The variable is
intended to be used in the makefiles. Those changes will come later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21445
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Fri, 22 Apr 2005 06:32:48 +0000 (06:32 +0000)]
Updated dependence analyzer. Fixed numerous bugs. Same stage scheduling, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21444
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 22 Apr 2005 05:36:59 +0000 (05:36 +0000)]
Malloc/Free have mod/ref effects. Do not allow CSE of function calls that
call malloc/free. This fixes PR555.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21443
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 22 Apr 2005 04:49:59 +0000 (04:49 +0000)]
remove 'another common example', which doesn't work with VC++, and indent
another example properly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21442
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Fri, 22 Apr 2005 04:13:13 +0000 (04:13 +0000)]
Eliminate tabs and trailing spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21441
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 22 Apr 2005 04:08:30 +0000 (04:08 +0000)]
Convert tabs to spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21440
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Fri, 22 Apr 2005 04:01:18 +0000 (04:01 +0000)]
Convert tabs to spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21439
91177308-0d34-0410-b5e6-
96231b3b80d8