oota-llvm.git
19 years agoUse the declare syntax not the call syntax for intrinsic prototypes so
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

19 years agodon't let Reid build void*'s :)
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

19 years agoFix some bugs found by running on llvm-test:
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

19 years agoChanges From Review Feedback:
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

19 years agoAdd a test case for MemMove.ll
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

19 years agoResult of strlen is size_t which is either uint or ulong, not int.
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

19 years agoMake interval partition print correctly, patch contributed by
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

19 years agoFix the compile failures from last night.
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

19 years agoconstmul bugfix: multiply by 27611 was broken
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

19 years agoclean up the code! (oops) lots more cleaning left, however.
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

19 years ago* Merge get_GVInitializer and getCharArrayLength into a single function
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

19 years agoAdd a new test case for the llvm.memcpy simplification case.
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

19 years ago* Add code to reduce multiplies by constant integers to shifts, adds and
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

19 years ago* Implement StrLenOptimization
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

19 years ago* Add a test case for StrLenOptimization
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

19 years agoIncorporate feedback from Chris:
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

19 years agoAdd SimplyLibCalls.cpp to VC++ build
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

19 years agoFix RUN: line to not always pass.
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

19 years agoFold (X > -1) | (Y > -1) --> (X&Y > -1)
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

19 years agoChanges due to code review and new implementation:
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

19 years agoimplement some more logical compares with constants, so that:
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

19 years agoLots of changes based on review and new functionality:
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

19 years agoUpdate the test case to handle a few more (degenerate) cases and remove
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

19 years agoCodegen x < 0 | y < 0 as (x|y) < 0. This allows us to compile this to:
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

19 years agoMake dominates(A,B) work with post dominators. Patch contributed by
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

19 years agoAdded question about turning off all optimizations. I think this has been asked once...
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

19 years agoimplement getelementptr.ll:test10
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

19 years agorename fn
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

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

19 years agoCorrectly handle global-argument aliases induced in main
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

19 years agoDon't mess up SCC traversal when a node has null edges out of it.
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

19 years agodocument 'opaque' types
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

19 years agoAdd feedback from Vikram
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

19 years agoMake sure the target buffer is null terminated so we don't blow up
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

19 years agoA test case for testing the StrCatOptimizer, currently XFAILed everywhere.
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

19 years agoPost-Review Cleanup:
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

19 years agoUse the %name rather than the "name" format so those familiar with the
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

19 years agoShut GCC 4.0 up about classes that have virtual functions but a non-virtual
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

19 years agoDeclare a function to create the SimplifyLibCalls pass.
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

19 years agoA new pass to provide specific optimizations for certain well-known library
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

19 years agoA test case for the the ExitInMain libcall simplification.
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

19 years agoOlder compilers won't like the inline virtual destructor in the header file
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

19 years agofix some bugs
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

19 years agoFix a thinko in the documentation of the splitBasicBlock method. The branch
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

19 years agoShut GCC 4.0 up about classes with virtual functions but no virtual
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

19 years agoShut GCC 4.0 up when it complains about classes with virtual functions that
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

19 years agoMake this readable for newbies and those who can only understand one set of
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

19 years agoextract has been renamed to llvm-extract to avoid conflicting with another tool
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

19 years agoEliminate cases where we could << by 64, which is undefined in C.
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

19 years agoThere are still uses for spaces in Makefiles -- to make text line up together,
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

19 years agoextract has been renamed to llvm-extract to avoid conflicting with another tool
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

19 years agoelisp code to help with LLVM code standards compliance
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

19 years ago.vimrc file to aid in LLVM coding standards conformance
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

19 years agoImplement xor.ll:test21: select (not C), A, B -> select C, B, A
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

19 years agoTest that xor/select are folded into a select with inverted operands.
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

19 years agoAllow these methods to take a generic Value* to simplify clients. Use
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

19 years agoallow these to take a generic Value*
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

19 years agoUse getPrimitiveSizeInBits() instead of getPrimitiveSize()*8
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

19 years agounxfail this.
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

19 years agoadd a new testcase which occurs in 181.mcf
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

19 years ago* The aesthetic police is on patrol!!...
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

19 years agoAdd a helper method
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

19 years agoFix a bug in my previous checkin
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

19 years agoThis file is never referenced
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

19 years agoAdd a method, remove last use of Type.def
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

19 years agoadd a method, remove a dead #include
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

19 years agoTypes.def is going away
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

19 years agoEliminate tabs and trailing spaces
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

19 years agoEliminate tabs and trailing spaces
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

19 years agoPropagate eq sets through the bu graphs to the cbu and eq graphs, fixing
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

19 years agoadd a bunch of documentation about the LLVM type resolution machinery
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

19 years agoMake the CBackend actually get included in llc by using USEDLIBS instead of
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

19 years agomake an advanced topics section, move symtab to it
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

19 years agoThis is not needed
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

19 years agoadd a search box for the documentation
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

19 years agoGeneralize the setcc -> PHI and Select folding optimizations to work with
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

19 years agoadd a new testcase
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

19 years agoAlways enable the C backend. This fixes a *vast* number of failures on the
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

19 years agoAdd method to return the type this type will be promoted to if it is
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

19 years agoMention the --enable-targets= option to configure.
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

19 years ago* Order #includes as per style guide
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

19 years agoConvert tabs to spaces
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

19 years agoHyphenate the adjective `n-bit' when used to describe values and processors
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

19 years agoBuild the `Skeleton' target when building "all" targets
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

19 years agoDocument the --enable-targets= feature of the configure script.
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

19 years agoSilence gcc-4.0.0 warnings.
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

19 years agoConvert tabs to spaces
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

19 years agoDon't always build CBackend and Skeleton. Make use of the TARGETS_TO_BUILD
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

19 years agoImplement the --enable-targets= feature of the configure script. The make
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

19 years agoTwo changes:
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

19 years agoMake sure the CBackend is always a target that is built.
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

19 years agoConsolidate the target selection options into a single option,
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

19 years agokeep track of max depth stats
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

19 years agoFirst step in avoiding compilation/usage of non-relevant targets. New
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

19 years agoUpdated dependence analyzer. Fixed numerous bugs. Same stage scheduling, etc.
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

19 years agoMalloc/Free have mod/ref effects. Do not allow CSE of function calls that
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

19 years agoremove 'another common example', which doesn't work with VC++, and indent
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

19 years agoEliminate tabs and trailing spaces
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

19 years agoConvert tabs to spaces
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

19 years agoConvert tabs to spaces
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