Commit Graph

553 Commits

Author SHA1 Message Date
Chris Lattner 8d7ff5e3dd Simplify the interface and remove an unneeded #include
llvm-svn: 13692
2004-05-23 21:21:35 +00:00
Chris Lattner 254f8f8ad5 Fairly substantial changes to update the alias analysis we are querying as
we make the transformation.  This allows us to use interprocedural alias
analyses successfully.

llvm-svn: 13691
2004-05-23 21:21:17 +00:00
Misha Brukman 98aa516a9c Clarify the logic: the flag is renamed to `deleteFn' to signify it will delete
the function instead of isolating it. This also means the condition is reversed.

llvm-svn: 13112
2004-04-22 23:00:51 +00:00
Misha Brukman e0682426f0 Add a flag to choose between isolating a function or deleting the function from
the Module. The default behavior keeps functionality as before: the chosen
function is the one that remains.

llvm-svn: 13111
2004-04-22 22:52:22 +00:00
Chris Lattner be8bb804c5 Fix an incredibly nasty iterator invalidation problem. I am too spoiled by ilists :)
Eventually it would be nice if CallGraph maintained an ilist of CallGraphNode's instead
of a vector of pointers to them, but today is not that day.

llvm-svn: 13100
2004-04-21 20:44:33 +00:00
Chris Lattner a9691fe70d Fix typeo
llvm-svn: 13089
2004-04-21 14:23:18 +00:00
Chris Lattner c87784f1fc REALLY fix PR324: don't delete linkonce functions until after the SCC traversal
is done, which avoids invalidating iterators in the SCC traversal routines

llvm-svn: 13088
2004-04-20 22:06:53 +00:00
Chris Lattner 514934051a Fix PR324 and testcase: Inline/2004-04-20-InlineLinkOnce.llx
llvm-svn: 13080
2004-04-20 20:20:59 +00:00
Chris Lattner d72c3eb54e Change the ExitBlocks list from being explicitly contained in the Loop
structure to being dynamically computed on demand.  This makes updating
loop information MUCH easier.

llvm-svn: 13045
2004-04-18 22:14:10 +00:00
Chris Lattner be43544429 Actually update the call graph as the inliner changes it. This allows us to
execute other CallGraphSCCPasses after the inliner without crashing.

llvm-svn: 12861
2004-04-12 05:37:29 +00:00
Chris Lattner 08f201bee5 Stop printing Function*
llvm-svn: 12857
2004-04-12 04:06:56 +00:00
Chris Lattner d041dcd92f Simplify code a bit, and be sure to mark the external node as potentially throwing
llvm-svn: 12856
2004-04-12 04:06:38 +00:00
Chris Lattner 4d25c86b52 Remove the "really gross hacks" that are there to deal with recursive functions.
Now we collect all of the call sites we are interested in inlining, then inline
them.  This entirely avoids issues with trying to inline a call site we got by
inlining another call site.  This also eliminates iterator invalidation issues.

llvm-svn: 12770
2004-04-08 06:34:31 +00:00
Chris Lattner e83693560a Add statistics to the loop extractor. The loop extractor has successfully
extracted all 63 loops for Olden/bh without crashing and without
miscompiling the program!!!

llvm-svn: 12491
2004-03-18 05:46:10 +00:00
Chris Lattner 5bce0c807d Fix problem with PHI nodes having multiple predecessors from different
exit nodes

llvm-svn: 12490
2004-03-18 05:43:18 +00:00
Chris Lattner e9235d2dde The code extractor needs dominator info. Provide it
llvm-svn: 12483
2004-03-18 03:48:06 +00:00
Chris Lattner 95ce36da0d Restore old inlining heuristic. As the comment indicates, this is a nasty
horrible hack.

llvm-svn: 12423
2004-03-15 06:38:14 +00:00
Chris Lattner 2f155d8734 Fix several bugs in the loop extractor. In particular, subloops were never
extracted, and a function that contained a single top-level loop never had
the loop extracted, regardless of how much non-loop code there was.

llvm-svn: 12403
2004-03-15 00:02:02 +00:00
Chris Lattner a1672c1bd8 Split into two passes. Now there is the general loop extractor, usable on
the command line, and the single loop extractor, usable by bugpoint

llvm-svn: 12390
2004-03-14 20:01:36 +00:00
Chris Lattner 0137de5ecb Passes don't print stuff!
llvm-svn: 12385
2004-03-14 04:17:53 +00:00
Chris Lattner 6c3e8c78cf FunctionPass's should not define their own 'run' method.
Require 'simplified' loops, not just raw natural loops.  This fixes
CodeExtractor/2004-03-13-LoopExtractorCrash.ll

llvm-svn: 12381
2004-03-14 04:01:06 +00:00
Chris Lattner 78a996aec4 Move prototype to IPO.h instead of Scalar.h
Make sure that the file interface header (IPO.h) is included first
remove dead #incldue

llvm-svn: 12375
2004-03-14 02:37:16 +00:00
Chris Lattner 692a47aeb9 Indent anon namespace properly, add copyright block
llvm-svn: 12373
2004-03-14 02:34:07 +00:00
Chris Lattner 41ec709e00 Move to the IPO library. Utils shouldn't contain passes.
llvm-svn: 12372
2004-03-14 02:32:27 +00:00
Chris Lattner 8eebc49884 DemoteRegToStack got moved from DemoteRegToStack.h to Local.h
llvm-svn: 12368
2004-03-14 02:13:38 +00:00
Chris Lattner 2dc85b27e4 This change makes two big adjustments.
* Be a lot more accurate about what the effects will be when inlining a call
   to a function when an argument is an alloca.
 * Dramatically reduce the penalty for inlining a call in a large function.
   This heuristic made it almost impossible to inline a function into a large
   function, no matter how small the callee is.

llvm-svn: 12363
2004-03-13 23:15:45 +00:00
Chris Lattner fe6f2e3e80 Implement ArgumentPromotion/aggregate-promote.ll
This allows pointers to aggregate objects, whose elements are only read, to
be promoted and passed in by element instead of by reference.  This can
enable a LOT of subsequent optimizations in the caller function.

It's worth pointing out that this stuff happens a LOT of C++ programs, because
objects in templates are generally passed around by reference.  When these
templates are instantiated on small aggregate or scalar types, however, it is
more efficient to pass them in by value than by reference.

This transformation triggers most on C++ codes (e.g. 334 times on eon), but
does happen on C codes as well.  For example, on mesa it triggers 72 times,
and on gcc it triggers 35 times.  this is amazingly good considering that
we are using 'basicaa' so far.

llvm-svn: 12202
2004-03-08 01:04:36 +00:00
Chris Lattner cc544e57f3 Implement: ArgumentPromotion/chained.ll
llvm-svn: 12200
2004-03-07 22:52:53 +00:00
Chris Lattner 64b8d697ad Fix another minor bug, exposed by perlbmk
llvm-svn: 12198
2004-03-07 22:43:27 +00:00
Chris Lattner 6770842b67 Fix a minor bug and turn debug output into, well, debug output.
llvm-svn: 12195
2004-03-07 21:54:50 +00:00
Chris Lattner 483ae01c9c New LLVM pass: argument promotion. This version only handles simple scalar
variables.

llvm-svn: 12193
2004-03-07 21:29:54 +00:00
Misha Brukman c91e1ff50d * Remove function to find "main" in a Module, there's a method for that
* Removing extraneous empty space and empty comment lines

llvm-svn: 12014
2004-02-29 23:09:10 +00:00
Chris Lattner e82c217b2f setcond instructions don't have aliasing implications.
llvm-svn: 11919
2004-02-27 18:09:25 +00:00
Chris Lattner 79636d7cd5 Since LLVM uses structure type equivalence, it isn't useful to keep around
multiple type names for the same structural type.  Make DTE eliminate all
but one of the type names

llvm-svn: 11879
2004-02-26 20:02:23 +00:00
Chris Lattner 8d1da1abee My faith in programmers has been found to be totally misplaced. One would
assume that if they don't intend to write to a global variable, that they
would mark it as constant.  However, there are people that don't understand
that the compiler can do nice things for them if they give it the information
it needs.

This pass looks for blatently obvious globals that are only ever read from.
Though it uses a trivially simple "alias analysis" of sorts, it is still able
to do amazing things to important benchmarks.  253.perlbmk, for example,
contains several ***GIANT*** function pointer tables that are not marked
constant and should be.  Marking them constant allows the optimizer to turn
a whole bunch of indirect calls into direct calls.  Note that only a link-time
optimizer can do this transformation, but perlbmk does have several strings
and other minor globals that can be marked constant by this pass when run
from GCCAS.

176.gcc has a ton of strings and large tables that are marked constant, both
at compile time (38 of them) and at link time (48 more).  Other benchmarks
give similar results, though it seems like big ones have disproportionally
more than small ones.

This pass is extremely quick and does good things.  I'm going to enable it
in gccas & gccld.  Not bad for 50 SLOC.

llvm-svn: 11836
2004-02-25 21:34:36 +00:00
Chris Lattner 7db49ce5b4 Intrinsic functions cannot throw
llvm-svn: 11383
2004-02-13 16:46:46 +00:00
Chris Lattner e3af6f73ce Don't depend on auto data conversion
llvm-svn: 11229
2004-02-09 05:16:30 +00:00
Chris Lattner ac6db755c3 Adjust to the changed StructType interface. In particular, getElementTypes() is gone.
llvm-svn: 11228
2004-02-09 04:37:31 +00:00
Chris Lattner fa829be4d3 Start using the new and improve interface to FunctionType arguments
llvm-svn: 11224
2004-02-09 04:14:01 +00:00
Chris Lattner fae8ab3088 rename the "exceptional" destination of an invoke instruction to the 'unwind' dest
llvm-svn: 11202
2004-02-08 21:44:31 +00:00
Chris Lattner 56997dd283 Fix PR225: [pruneeh] -pruneeh pass removes invoke instructions it shouldn't
llvm-svn: 11200
2004-02-08 21:15:59 +00:00
Chris Lattner 071bc60450 splitBasicBlock "does the right thing" now, no reason to reposition it.
llvm-svn: 11199
2004-02-08 20:49:07 +00:00
Chris Lattner 0ff9da5fed Remove unneeded code now that splitBasicBlock does the "right thing"
llvm-svn: 11111
2004-02-04 03:21:51 +00:00
Brian Gaeke 6204e75c4a Make deadarghaX0r warning louder.
(I just love typing haX0r.   haX0r haX0r haX0r.)

llvm-svn: 11079
2004-02-02 19:32:27 +00:00
Chris Lattner fdf788eebd Remove dependence on structure index type. s/MT/FT
llvm-svn: 10726
2004-01-09 06:02:51 +00:00
Chris Lattner 56db5e98c8 Merging constants can cause further room for improvement. Iterate until
we converge

llvm-svn: 10618
2003-12-28 07:19:08 +00:00
Chris Lattner c2ee05427e Fix memory corruption bug PR193
llvm-svn: 10586
2003-12-22 23:49:36 +00:00
Chris Lattner 771804b541 Implement RaiseAllocations/FreeCastConstantExpr.ll
llvm-svn: 10305
2003-12-07 01:42:08 +00:00
Chris Lattner 28ebb3e0a6 Delete dead line
llvm-svn: 10164
2003-11-22 02:26:17 +00:00
Chris Lattner f40cdbe856 Fix bug: Transforms/PruneEH/2003-11-21-PHIUpdate.llx
llvm-svn: 10163
2003-11-22 02:20:36 +00:00
Chris Lattner 61b3f20bf1 Considering that CI is not even IN SCOPE here, I wooda thought the compiler
would have caught this.  *sigh*

llvm-svn: 10142
2003-11-21 21:57:29 +00:00
Chris Lattner f52e03c79e Finegrainify namespacification
llvm-svn: 10138
2003-11-21 21:54:22 +00:00
Chris Lattner 456031eed7 Get rid of using decls, finegrainify namespacification
llvm-svn: 10137
2003-11-21 21:52:10 +00:00
Chris Lattner 51c28a5c1b * Finegrainify namespacification
* Make the cost metric for passing constants in as arguments to functions MUCH
  more accurate, by actually estimating the amount of code that will be constant
  propagated away.

llvm-svn: 10136
2003-11-21 21:46:09 +00:00
Chris Lattner a82f131abb Finegrainify namespacification
Print out the costs for functions that AREN'T inlined as well

llvm-svn: 10135
2003-11-21 21:45:31 +00:00
Chris Lattner 8791e26de1 * Finegrainify namespacification
* Implement FuncResolve/2003-11-20-BogusResolveWarning.ll
   ... which eliminates a large number of annoying warnings.  I know misha
   will miss them though!

llvm-svn: 10123
2003-11-20 21:21:31 +00:00
Chris Lattner 2af517281d Start using the nicer terminator auto-insertion API
llvm-svn: 10111
2003-11-20 18:25:24 +00:00
Chris Lattner 18e5d5228a When spewing out warnings during function resolution, do not vomit out pages
and pages of non-symbolic types.

llvm-svn: 10109
2003-11-20 18:19:35 +00:00
Misha Brukman 4f7ce560d5 This file was somehow missing a top-level comment line.
llvm-svn: 10055
2003-11-17 19:35:17 +00:00
Brian Gaeke 960707c335 Put all LLVM code into the llvm namespace, as per bug 109.
llvm-svn: 9903
2003-11-11 22:41:34 +00:00
Chris Lattner 984e11792f Do NOT inline self recursive calls into other functions. This is causing the
pool allocator no end of trouble, and doesn't make a lot of sense anyway.  This
does not solve the problem with mutually recursive functions, but they are much less common.

llvm-svn: 9828
2003-11-09 05:05:36 +00:00
Chris Lattner d61abe82d3 Untypo
llvm-svn: 9827
2003-11-09 05:04:25 +00:00
Chris Lattner b0a4b49b23 Fix bug: PR93
llvm-svn: 9752
2003-11-06 19:18:49 +00:00
Chris Lattner 4e1b467594 Fix the problem with running cleanups in bugpoint: We were deleting arguments
of intrinsic functions, causing the verifier to fail.

llvm-svn: 9745
2003-11-05 21:53:41 +00:00
Chris Lattner 9e60aced2e Split behavior into two pieces
llvm-svn: 9741
2003-11-05 21:43:02 +00:00
Chris Lattner 7f7285bab7 Fix PR78
llvm-svn: 9648
2003-11-02 02:06:27 +00:00
Chris Lattner b45d9077cb Strip off CPR's manually, because if we don't, the inliner doesn't delete dead
functions.  GRR

llvm-svn: 9641
2003-10-31 21:05:58 +00:00
Chris Lattner e5f15cdc5f Fix bug: ConstantMerge/2003-10-28-MergeExternalConstants.ll & PR64
llvm-svn: 9579
2003-10-29 06:01:26 +00:00
Chris Lattner 3e5ff2568c Check in statistifying patch for Bill
llvm-svn: 9572
2003-10-28 23:14:59 +00:00
Chris Lattner 5e004e8ce0 Propagating constants to arguments can make other arguments constant. For now
do something dumb, and inefficient, but more complete.

llvm-svn: 9542
2003-10-27 21:09:00 +00:00
Chris Lattner 12b78db685 We might as well strip off any CPRs before propagation
llvm-svn: 9437
2003-10-23 18:49:23 +00:00
Chris Lattner 05c71fb3e6 * We were forgetting to pass varargs arguments through a call
* Add a work around for bug PR56, gross but necessary for now.

llvm-svn: 9428
2003-10-23 17:44:53 +00:00
Chris Lattner f516c698ff Check in initial version of ipcp
llvm-svn: 9423
2003-10-23 16:52:27 +00:00
Chris Lattner 0658cc20bd Make this pass substantially stronger by having it delete dead return values
as well as arguments.  Now it can delete arguments and return values which are
only passed into other arguments or are returned, if they are dead.  This causes
it to delete several hundred extra args/retvals from the C++ hello world program,
shrinking it by about 2K.

llvm-svn: 9398
2003-10-23 03:48:17 +00:00
Chris Lattner 9e8fe49c37 This important patch fixes two warnings in the linker which can occur from linking
valid pieces of code

llvm-svn: 9390
2003-10-22 23:03:38 +00:00
Chris Lattner 6d3425e87a Update the 'used' flag correctly
llvm-svn: 9366
2003-10-22 04:43:18 +00:00
Chris Lattner 12b3593dea Loop over the module, not the symbol table. This makes the code handle
unused external functions again

llvm-svn: 9365
2003-10-22 04:42:20 +00:00
Chris Lattner 4cd99ffa57 Implement FunctionResolve/2003-10-21-GlobalResolveHack.ll
llvm-svn: 9363
2003-10-22 03:35:34 +00:00
Chris Lattner af2c00bf14 Fix bug: FunctionResolve/2003-10-21-GlobalTypeDifference.ll
llvm-svn: 9359
2003-10-21 23:17:56 +00:00
John Criswell 29265fe981 Added LLVM copyright header.
llvm-svn: 9321
2003-10-21 15:17:13 +00:00
John Criswell 4436c49787 Added LLVM copyright notice to Makefiles.
llvm-svn: 9312
2003-10-20 22:26:57 +00:00
John Criswell 482202a601 Added LLVM project notice to the top of every C++ source file.
Header files will be on the way.

llvm-svn: 9298
2003-10-20 19:43:21 +00:00
Chris Lattner 2d9c117e21 Reorder for minor efficiency gain
llvm-svn: 9285
2003-10-20 05:54:26 +00:00
Chris Lattner b94550e537 Change the Opcode enum for PHI nodes from "Instruction::PHINode" to "Instruction::PHI" to be more consistent with the other instructions.
llvm-svn: 9269
2003-10-19 21:34:28 +00:00
Chris Lattner f95d9b99b3 Decrease usage of use_size()
llvm-svn: 9135
2003-10-15 16:48:29 +00:00
Chris Lattner 612cafef0a Whoops, we inserted into the wrong set. What's up with the dead set anyway?
llvm-svn: 9094
2003-10-13 16:49:21 +00:00
Chris Lattner 951e7329e8 Use external df iterators to avoid revisiting blocks in functions with
multiple setjmp calls.

llvm-svn: 9093
2003-10-13 16:44:50 +00:00
Chris Lattner 44d2c3514a Regularize header file comments
llvm-svn: 9071
2003-10-13 03:32:08 +00:00
Chris Lattner f7a60cd9fa Minor cleanups
llvm-svn: 9067
2003-10-13 01:02:33 +00:00
Chris Lattner 56b8526083 Checkin an improvement contributed by Bill:
Only transform call sites in a setjmp'ing function which are reachable from
the setjmp.  If the call dominates the setjmp (for example), the called
function cannot longjmp to the setjmp.

This dramatically reduces the number of invoke instructions created in some
large testcases.

llvm-svn: 9066
2003-10-13 00:57:16 +00:00
Misha Brukman 8b2bd4ed47 Fix spelling.
llvm-svn: 9027
2003-10-10 17:57:28 +00:00
Chris Lattner f8492537eb Fix bugzilla bug #5
llvm-svn: 8930
2003-10-07 19:33:31 +00:00
Chris Lattner 6dc0ae2d18 Speed up the predicate used to decide when to inline by caching the size
of callees between executions.

On eon, in release mode, this changes the inliner from taking 11.5712s
to taking 2.2066s.  In debug mode, it went from taking 14.4148s to
taking 7.0745s.  In release mode, this is a 24.7% speedup of gccas, in
debug mode, it's a total speedup of 11.7%.

This also makes it slightly more aggressive.  This could be because we
are not judging the size of the functions quite as accurately as before.
When we start looking at the performance of the generated code, this can
be investigated further.

llvm-svn: 8893
2003-10-06 15:52:43 +00:00
Misha Brukman 4ce9dae5b1 Credits are now in top-level CREDITS.TXT
llvm-svn: 8661
2003-09-22 21:57:15 +00:00
Chris Lattner c8dfbbbf25 Global variables with APPENDING linkage are very important to keep around!
llvm-svn: 8632
2003-09-20 19:00:50 +00:00
Chris Lattner 5dac64f629 Rename Function::getEntryNode -> getEntryBlock
llvm-svn: 8625
2003-09-20 14:39:18 +00:00
Chris Lattner 39f398b50d Fix bug raising allocations whose call sites were invoke instructions.
Thanks to brg for tracking down the problem so precisely!

llvm-svn: 8568
2003-09-16 19:42:21 +00:00
Chris Lattner ec6d7a6df3 This is effectively a complete rewrite of the globaldce algorithm, resulting
in it being both shorter and more effective.  It no longer depends on the
callgraph, so one FIXME has been fixed.

Additionally, this pass was not able to delete recursive (but dead) functions
if they were pointed to by global variables which were also dead.  In fact
this pass had a lot of problems deleting functions which were only pointed
to by dead globals and other stuff.

Fixing this means that the entire EH library should be stripped away now from
programs that don't use sjlj or exceptions.

llvm-svn: 8567
2003-09-16 19:27:31 +00:00
Chris Lattner 40b6621b50 Minor cleanups, give credit, remove code that should not be necessary, and
was a "major hack"  :)

llvm-svn: 8524
2003-09-15 05:43:05 +00:00
Chris Lattner 6f99eb56c3 Initial checkin of the Setjmp/Longjmp lowering/transformation pass,
contributed by the masterful Bill Wendling!

llvm-svn: 8520
2003-09-15 04:56:27 +00:00
Chris Lattner da3585335b Ugh, a bug fix needed because of the bug in the CallGraph code
llvm-svn: 8519
2003-09-15 04:52:00 +00:00
Chris Lattner 5a6fa29eb3 Fix bug: PruneEH/2003-09-14-ExternalCall.llx
llvm-svn: 8516
2003-09-15 02:22:50 +00:00
Misha Brukman 250f976eb3 Spell `definitely' correctly.
llvm-svn: 8466
2003-09-11 15:31:17 +00:00
Chris Lattner 216c7b8aed Fix spell-o's
llvm-svn: 8431
2003-09-10 05:29:43 +00:00
Chris Lattner 04ecefe232 Eliminate support for the llvm.unwind intrinisic, using the Unwind instruction instead
llvm-svn: 8411
2003-09-08 19:44:26 +00:00
Chris Lattner 9c58cf6d03 Add support for the unwind instruction
llvm-svn: 8408
2003-09-08 18:54:55 +00:00
Chris Lattner ffc2d16f21 Final cleanup: remove dead code
llvm-svn: 8291
2003-09-01 18:01:36 +00:00
Chris Lattner 267f20475b Not only is this a lot smaller, it actually works if there is already a
function with the right name in the module.

llvm-svn: 8290
2003-09-01 16:53:46 +00:00
Chris Lattner 5b8addab9b Dead files
llvm-svn: 8289
2003-09-01 16:49:57 +00:00
Chris Lattner d4a1af7d49 If "These should be used only by the auto-parallelization pass", we might as
well put them INTO the auto-par pass.

llvm-svn: 8288
2003-09-01 16:49:38 +00:00
Chris Lattner 685dc1ea98 Moved all of the cilkifier stuff into lib/Transforms/IPO, as it really is not
support stuff.

llvm-svn: 8287
2003-09-01 16:45:30 +00:00
Chris Lattner 6c6ba71cea Minor cleanups
Do not #include Parallelize.h, it's just a subset of Cilkifier.h

llvm-svn: 8285
2003-09-01 16:42:16 +00:00
Chris Lattner 8ef1b88aef Change the RaiseAllocations pass to be a Pass instead of a BasicBlock pass.
This makes it more efficient: it doesn't have to scan the whole program, so
it performs work proportional to the number of malloc/free calls in the
program, not the size of the program.

llvm-svn: 8280
2003-09-01 03:14:56 +00:00
Chris Lattner d075cc282b Heavily refactor code:
* Separate the policy decisions into a derived class [InlineSimple]
  * Move the inlining mechanics into a base class [Inliner]
  * Change the inliner to be an SCCPass, making it more structured and
    eventually pipelinable with other SCC passes

llvm-svn: 8257
2003-08-31 19:10:30 +00:00
Chris Lattner 75444c751f Add accessor function
llvm-svn: 8253
2003-08-31 16:30:07 +00:00
Chris Lattner 0a3f8d5dcd Initial checkin of the -prune-eh pass, a very simple exception handling removal pass
llvm-svn: 8250
2003-08-31 02:47:32 +00:00
Chris Lattner d367d0553e Inline invoke instructions as well as call instructions
llvm-svn: 8107
2003-08-24 06:59:28 +00:00
Chris Lattner 9c5bfd0f80 Big diff for a small change: delete inlined functions if all callees have
inlined the function.
Implements: Inline/inline_dce.ll

llvm-svn: 8101
2003-08-24 05:03:14 +00:00
Chris Lattner 6fc0ee9901 Fix bug: FunctionResolve/2003-08-23-ArgumentWarning.ll
llvm-svn: 8076
2003-08-23 20:03:05 +00:00
Chris Lattner 015d98e940 Unless we CANNOT merge the arguments, do so
llvm-svn: 7999
2003-08-20 23:50:38 +00:00
Misha Brukman 7eb05a170a Spell `necessary' correctly.
llvm-svn: 7944
2003-08-18 14:43:39 +00:00
Chris Lattner cbf0839a03 Fix FIXME by removing FIXME
llvm-svn: 7832
2003-08-13 22:15:04 +00:00
John Criswell 35364c8408 Removing the pool allocator from the main CVS tree.
Use the poolalloc module in CVS from now on.

llvm-svn: 7810
2003-08-13 15:36:15 +00:00
Sumant Kowshik 46d9b22e90 Bug fix: Some nodes pointed to by globals may not be marked incomplete and need to be tracked to find pool arguments
llvm-svn: 7763
2003-08-12 00:45:13 +00:00
Chris Lattner 603e0076c0 Fix handling of 'free' if it has absolutely no prototype
llvm-svn: 7721
2003-08-11 15:05:08 +00:00
John Criswell 449670a8f7 Fixed a segfault in gccld.
The original code does not work because the value from WorkList.end() is
invalidated once WorkList.erase() is called.  To ensure proper functionality,
we must ensure that WorkList.erase() is always called before WorkList.end().

llvm-svn: 7673
2003-08-07 14:43:13 +00:00
Sumant Kowshik 0b83080595 Added code for pool allocating only the pool-allocatable data structures in the presence of collapsed nodes + a couple of bug fixes
llvm-svn: 7662
2003-08-07 05:29:28 +00:00
Chris Lattner c592c9f8a3 Remove unnecessary use of NonCopyable
llvm-svn: 7641
2003-08-06 17:16:24 +00:00
Chris Lattner adc5a89a3b Minor changes:
* Expand most tabs into spaces
  * Move #define DEBUG_TYPE to top of file to avoid warning

llvm-svn: 7611
2003-08-05 18:44:12 +00:00
Sumant Kowshik 0383a65103 Major bug fixes including a memory leak and tracking some exceptional conditions. Also added support for including global and indirect call information in the DS graphs used by the pool allocation
llvm-svn: 7605
2003-08-05 17:01:54 +00:00
Chris Lattner 8abcd56c74 DEBUG got moved to Support/Debug.h
llvm-svn: 7492
2003-08-01 22:15:03 +00:00
Chris Lattner e9340228c9 Fix bug: FunctionResolve/2003-07-23-CPR-Reference.ll
This fixes a long time annoyance which caused prototypes for bzero, bcopy,
bcmp, fputs, and fputs_unlocked to never get deleted.  Grr.

llvm-svn: 7285
2003-07-23 22:03:18 +00:00
Chris Lattner 6e69c28229 Eliminate using declarations, adjust for new DSGraph API
llvm-svn: 6992
2003-06-30 03:14:44 +00:00
Chris Lattner fbfcf01b98 Allow the inlining limit to be controlled from the command line!
llvm-svn: 6929
2003-06-28 15:57:04 +00:00
Chris Lattner eaae578820 Add support to globaldce for deleting dead function prototypes
llvm-svn: 6918
2003-06-26 05:41:18 +00:00
Chris Lattner fd5d323ea9 When internalizing global ctor/dtor list, also mark it constant. This is gross, but
until DSA is working all of the time and is totally reliable, we do this.

llvm-svn: 6917
2003-06-26 05:30:40 +00:00
Chris Lattner 2ab04f7a41 Add argument to DAE to allow operation on non-internal functions
llvm-svn: 6895
2003-06-25 04:12:49 +00:00
Chris Lattner 0024dff76f Fix the build. :(
llvm-svn: 6797
2003-06-20 14:36:52 +00:00
Chris Lattner d01460495e Changes to privatize NodeType
llvm-svn: 6795
2003-06-19 21:15:26 +00:00
Chris Lattner bbe2dab909 Remove a bunch of complicated code. The functionality is implemented in instcombine instead
llvm-svn: 6782
2003-06-19 16:59:19 +00:00
Chris Lattner 5d3c145d4e Handle arguments passed in through the va_arg area
llvm-svn: 6769
2003-06-18 16:25:51 +00:00
Chris Lattner 13bf28c00a Initial checkin of DAE pass
llvm-svn: 6759
2003-06-17 22:21:05 +00:00
Chris Lattner bf2be2163b Fix compilation problem on GCC 2.9x
llvm-svn: 6667
2003-06-07 20:29:58 +00:00
Sumant Kowshik c318ca1a51 Made changes suggested by Chris
llvm-svn: 6606
2003-06-04 08:03:57 +00:00
Chris Lattner 2b1329611b Fix bug: FunctionResolve/2003-05-31-AllInternalDecls.ll
llvm-svn: 6486
2003-05-31 21:57:06 +00:00
Chris Lattner 080436820e Fix bug: FuncResolve/2003-05-31-InternalDecl.ll
Count resolutions correctly.

llvm-svn: 6482
2003-05-31 21:08:45 +00:00
Chris Lattner 709c1d469b Simplify funcresolve a bit more
llvm-svn: 6480
2003-05-31 20:44:46 +00:00
Chris Lattner 5ef98de61c Fix bug: FunctionResolve/2003-05-31-FuncPointerResolve.ll
llvm-svn: 6479
2003-05-31 20:33:31 +00:00
Sumant Kowshik 04c1382291 Added support for function pointers
llvm-svn: 6420
2003-05-29 22:42:44 +00:00
Chris Lattner 530d4bffbf * Separate all of the grunt work of inlining out into the Utils library.
* Make the function inliner _significantly_ smarter.  :)

llvm-svn: 6396
2003-05-29 15:11:31 +00:00
Chris Lattner 8d0a71aff8 Remove using declarations
llvm-svn: 6306
2003-05-22 22:00:07 +00:00
Chris Lattner 224ae025ef Make the list accept comma separated names
llvm-svn: 6295
2003-05-22 20:27:13 +00:00
Chris Lattner ad44cd840b * Revert to old behavior of ignoring a module if it doesn't contain a main
function and no symbols were explicitly marked to be externalized.
* Add new -internalize-public-api-list option that can be used if the symbol
  list is small, and making a new file is annoying.

llvm-svn: 6289
2003-05-22 19:48:00 +00:00
Chris Lattner 44457bb5ea Add option to internalize to allow it to read a file to determine which symbols
should not be internalized

llvm-svn: 6288
2003-05-22 19:34:49 +00:00
Chris Lattner fa58d79cf2 Fix bug: FunctionResolve/2003-05-21-MissingArguments.ll
llvm-svn: 6273
2003-05-21 20:51:52 +00:00
Chris Lattner fce555a981 Don't inline functions that take variable numbers of arguments!
llvm-svn: 6024
2003-05-08 02:36:43 +00:00
Chris Lattner d9bd5a0443 Remove using decl
llvm-svn: 6023
2003-05-08 02:34:52 +00:00
Chris Lattner 9810b94850 Fix several bugs:
* Warnings were emitted all of the time and were really annoying
  * Functions could not be resolved unless they had external linkage.  Linkonce
    linkage was not allowed
  * ConstantPointerRef's were not handled when linking functions
    we now actually handle cast (CPR) to X -> cast (NewCPR) to X

llvm-svn: 5967
2003-04-28 01:23:29 +00:00
Chris Lattner 889f620841 Remove unnecesary &*'s
llvm-svn: 5872
2003-04-23 16:37:45 +00:00
Chris Lattner defe5c72e8 Implement: FunctionResolve/2003-04-18-ForwardDeclGlobal.ll
llvm-svn: 5816
2003-04-19 00:15:27 +00:00
Chris Lattner 424132aa57 Global constants CAN be external
llvm-svn: 5808
2003-04-18 04:34:29 +00:00
Chris Lattner 46b3d30bf6 Change the interface to constant expressions to allow automatic folding
llvm-svn: 5793
2003-04-16 22:40:51 +00:00
Chris Lattner 379a8d2d1c Add new linkage types to support a real frontend
llvm-svn: 5786
2003-04-16 20:28:45 +00:00
Chris Lattner 50cbb9081a Eliminate tons of bogus warnings
llvm-svn: 5686
2003-03-03 19:57:46 +00:00
Chris Lattner dbb05b0f09 Replace assertion with a handler.
llvm-svn: 5653
2003-02-27 20:55:48 +00:00
Chris Lattner 04c9274e50 Fix a bug that cause a crash resolving questionable function calls
llvm-svn: 5567
2003-02-14 19:12:29 +00:00
Chris Lattner ade85ecf77 Fix a misunderstanding of the standard associative containers
llvm-svn: 5565
2003-02-14 05:34:36 +00:00
Chris Lattner 4ecd2d0125 Fix a problem Sumant was running into
llvm-svn: 5499
2003-02-06 22:03:46 +00:00
Chris Lattner 82723d73ba Split public interface out into header file
llvm-svn: 5472
2003-02-03 19:08:18 +00:00
Chris Lattner c44c04af44 Change DSGraph stuff to use hash_(set|map) instead of std::(set|map)
This change provides a small (3%) but consistent speedup

llvm-svn: 5460
2003-02-01 04:52:08 +00:00
Chris Lattner 68f63f779c Fix a bug resolving sprintf(...) to sprintf(char*, char*, ...)
llvm-svn: 5446
2003-01-30 22:38:44 +00:00
Chris Lattner 47948952dd Actually print the function _name_ if there is a problem
llvm-svn: 5443
2003-01-30 21:33:07 +00:00
Chris Lattner b2d9f7dcc9 * Fix function resolution for varargs function to generate incorrect bytecode instead of crashing
* remove using decls
 CVS: ----------------------------------------------------------------------

llvm-svn: 5437
2003-01-30 18:22:32 +00:00
Chris Lattner 6e07784692 Initial checkin of pool allocation code
llvm-svn: 5432
2003-01-29 21:12:13 +00:00
Chris Lattner d1fd7e958c Disable construction of pool allocator
llvm-svn: 5422
2003-01-24 20:13:20 +00:00
Chris Lattner 661841c49b Fix references to functions
llvm-svn: 5222
2003-01-13 00:27:23 +00:00
Vikram S. Adve d9676ed983 External routines used to identify Cilk operations inserted by the
parallelization pass.

llvm-svn: 4965
2002-12-10 13:08:48 +00:00
Vikram S. Adve 9a672d17ae This file implements a pass that automatically parallelizes a program,
using the Cilk multi-threaded runtime system to execute parallel code.
The current version inserts too many sync() operations in the program
because it does not attempt to optimize their placement.

llvm-svn: 4962
2002-12-10 00:43:34 +00:00
Chris Lattner 8016a16ed0 Fix symbol table problem
llvm-svn: 4785
2002-11-20 19:32:43 +00:00
Chris Lattner 98cf1f5d64 - Eliminated the deferred symbol table stuff in Module & Function, it really
wasn't an optimization and it was causing lots of bugs.

llvm-svn: 4779
2002-11-20 18:36:02 +00:00
Chris Lattner c362618f2a Minor changes to cloning interface
llvm-svn: 4770
2002-11-19 22:54:01 +00:00
Chris Lattner b1120055b9 Rework inline pass to use cloning infrastructure to do the dirty work
llvm-svn: 4766
2002-11-19 21:54:07 +00:00
Chris Lattner 1666751257 Start using the new function cloning header
llvm-svn: 4764
2002-11-19 20:59:41 +00:00
Chris Lattner d06467db62 Move MutatStructTypes.h out of IPO
llvm-svn: 4762
2002-11-19 20:49:40 +00:00
Chris Lattner fb8ca4a899 Rename CloneFunction.h to Cloning.h
llvm-svn: 4760
2002-11-19 20:08:24 +00:00
Chris Lattner 58f9002b4a Move the function extractor pass from tools/extract into lib/Xform/IPO
llvm-svn: 4759
2002-11-19 18:42:59 +00:00
Chris Lattner 52b8fc0c35 Fix testcase: FunctionResolve/2002-11-09-ExternFn.ll
llvm-svn: 4668
2002-11-10 03:36:55 +00:00
Chris Lattner 17069b342a Use the new getMainFunction() method to efficiently locate main
llvm-svn: 4630
2002-11-08 20:34:21 +00:00
Chris Lattner 5997c3d866 Fix bug: FunctionResolve/2002-11-07-RetMismatch.ll
llvm-svn: 4618
2002-11-08 00:38:20 +00:00
Chris Lattner 3ff5457b32 Really disable pool allocator
llvm-svn: 4216
2002-10-17 04:57:09 +00:00
Chris Lattner 149376dee5 - Change Function's so that their argument list is populated when they are
constructed.  Before, external functions would have an empty argument list,
    now a Function ALWAYS has a populated argument list.

llvm-svn: 4149
2002-10-13 20:57:00 +00:00
Chris Lattner 5f9f4e3aac Account for global variables resolved more accurately.
llvm-svn: 4143
2002-10-13 17:30:30 +00:00
Chris Lattner 88dbc4dbe9 Use methods that are more explanatory
llvm-svn: 4142
2002-10-13 17:12:47 +00:00
Chris Lattner 1a535e18cd Stop using DataStructureGraph.h
llvm-svn: 4106
2002-10-10 20:33:46 +00:00
Chris Lattner eac4dcd0bd - Dramatically simplify the ConstantMerge code now that
Value::replaceAllUsesWith works with constants correctly.

llvm-svn: 4104
2002-10-09 23:16:04 +00:00
Chris Lattner 013eca003a Almost a complete rewrite of FunctionResolution to now resolve functions
and global variables.

This fixes bug: FuncResolve/2002-08-19-ResolveGlobalVarsEasier.ll
And bug: SingleSource/UnitTests/2002-10-09-ArrayResolution.c

Note that this does not fix bug:
FunctionResolve/2002-08-19-ResolveGlobalVars.ll because replaceAllUsesWith
breaks when a constantexpr is pointing to the thing being replaced.  This
is more of an infrastructure problem than anything.

llvm-svn: 4099
2002-10-09 21:10:06 +00:00
Chris Lattner 68f21bcb1b Non-functionality change just to make it more clear what is going on
llvm-svn: 4060
2002-10-07 18:34:32 +00:00
Chris Lattner bf3a099a62 Updates to work with recent Statistic's changes:
* Renamed StatisticReporter.h/cpp to Statistic.h/cpp
    * Broke constructor to take two const char * arguments instead of one, so
      that indendation can be taken care of automatically.
    * Sort the list by pass name when printing
    * Make sure to print all statistics as a group, instead of randomly when
      the statistics dtors are called.
    * Updated ProgrammersManual with new semantics.

llvm-svn: 4002
2002-10-01 22:38:41 +00:00
Chris Lattner 3cf3782bc0 Updates to work with recent Statistic's changes:
* Renamed StatisticReporter.h/cpp to Statistic.h/cpp
    * Broke constructor to take two const char * arguments instead of one, so
      that indendation can be taken care of automatically.
    * Sort the list by pass name when printing
    * Make sure to print all statistics as a group, instead of randomly when
      the statistics dtors are called.
    * Updated ProgrammersManual with new semantics.

llvm-svn: 4001
2002-10-01 22:38:37 +00:00
Chris Lattner 870a4a5bb4 Converted SimpleStructMutation to take TargetData as a required pass.
llvm-svn: 3932
2002-09-26 00:17:21 +00:00
Chris Lattner 28d103548d Fix: ConstantMerge/2002-09-23-CPR-Update.ll
Basically, this bug boiled down to calling replaceUsesOfWith on a constant,
which changed it's shape in an illegal way.  This pass now goes through all
of the trouble neccesary to do the replacement on constants.

llvm-svn: 3895
2002-09-23 23:00:46 +00:00
Chris Lattner facc751260 Don't insert a PHI node to merge "returns" from an inlined function if there
is only a single return from the function!

llvm-svn: 3878
2002-09-22 18:41:25 +00:00
Chris Lattner afb4fc189c Fix FunctionInlining pass assertion failure:
ilist:104: failed assertion `Traits::getNext(NodePtr) != 0 && "Dereferencing end()!"'

llvm-svn: 3768
2002-09-16 22:30:20 +00:00
Misha Brukman 2e8086f046 Function.h is unnecessary when Module.h is included.
llvm-svn: 3716
2002-09-14 03:04:02 +00:00
Misha Brukman 09d24c7374 Following Chris's advice, I'm pruning some unnecessary .h includes that I'm
noticing. Since Module includes Function, and eventually, BasicBlock and
GlobalVariable, the last three are unnecessary to be included directly.

llvm-svn: 3713
2002-09-14 02:06:53 +00:00
Chris Lattner fc91ee91e8 Change the MallocInst & AllocaInst ctors to take the allocated type, not the
pointer type returned.

llvm-svn: 3711
2002-09-13 22:28:50 +00:00
Chris Lattner 322bf4f3a9 Change the MallocInst & AllocaInst ctors to take the allocated type, not the
pointer type returned.

llvm-svn: 3710
2002-09-13 22:28:45 +00:00
Chris Lattner 9674b869e5 Fix bug in previous checkin
llvm-svn: 3672
2002-09-10 23:31:12 +00:00
Chris Lattner f80f7b02b7 Clean up code due to auto-insert constructors
llvm-svn: 3666
2002-09-10 22:38:49 +00:00
Chris Lattner a239e6879d Clean up code due to auto-insert constructors
llvm-svn: 3665
2002-09-10 22:38:47 +00:00
Chris Lattner 5c447863d5 Simplify code (somtimes dramatically), by using the new "auto-insert" feature
of instruction constructors.

llvm-svn: 3655
2002-09-10 17:03:06 +00:00
Chris Lattner 5f00d66cc3 Factor silly code duplication out
llvm-svn: 3627
2002-09-08 21:47:54 +00:00
Chris Lattner 02fe752fbd Eliminated the MemAccessInst class, folding contents into GEP class.
llvm-svn: 3488
2002-08-22 23:37:24 +00:00
Chris Lattner 67a806ed90 Do not create load/stores with indexes
llvm-svn: 3420
2002-08-21 22:10:52 +00:00
Chris Lattner 8f3acc6fde - Made GlobalDCE worklist driven, making it more successful. Now can handle
cases like: test/Regression/Transforms/GlobalDCE/2002-08-17-WorkListTest.ll

llvm-svn: 3381
2002-08-18 01:28:30 +00:00
Chris Lattner b3c2af69fe Remove support for NOT instruction
llvm-svn: 3313
2002-08-14 17:45:39 +00:00
Chris Lattner f0ed55d1ee - Cleaned up the interface to AnalysisUsage to take analysis class names
instead of ::ID's.
 - Pass::getAnalysis<> now no longer takes an optional argument

llvm-svn: 3265
2002-08-08 19:01:30 +00:00
Chris Lattner 7ff5a21f0f Remove unneccesary #inlcude
llvm-svn: 3200
2002-08-01 20:01:02 +00:00
Chris Lattner 47cc3669ff * Indent class into anonymous namespace, filling up the diff with garbage
* Internalize global variables with initializers
* Add new stat to track global variable internalization
* Only count functions that were not internal before in internalized function
  count

llvm-svn: 3163
2002-07-30 19:48:44 +00:00
Chris Lattner ed37856e69 Fix bug with last patch which would occur when a call returned void and we
attempted to assign it a name.

llvm-svn: 3142
2002-07-30 02:42:49 +00:00
Chris Lattner aacadd1a95 * Make sure the resolved function call instructions get the name from the
old call instruction
* Implement conversion of return values for calls.  This fixes bug:
   test/Regression/Transforms/FunctionResolve/retmismatch3.ll

llvm-svn: 3140
2002-07-30 00:50:49 +00:00
Chris Lattner c8b7092e54 * Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses

llvm-svn: 3113
2002-07-26 21:12:46 +00:00
Chris Lattner a2c0985980 * Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
  are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses

llvm-svn: 3112
2002-07-26 21:12:44 +00:00
Chris Lattner 10073a9080 *** empty log message ***
llvm-svn: 3075
2002-07-25 06:17:51 +00:00
Chris Lattner 99a53f6aa9 Eliminate several include/llvm/Transforms/IPO/*.h files, moving their contents into IPO.h
llvm-svn: 3043
2002-07-24 17:12:05 +00:00
Chris Lattner 42706e4dec Merge ChangeAllocations into scalar.h
llvm-svn: 3038
2002-07-23 22:04:17 +00:00
Chris Lattner 5afe2f2ccd Rename header
llvm-svn: 3037
2002-07-23 22:04:02 +00:00
Chris Lattner 0db86893eb Cleanup and simplify code
llvm-svn: 3036
2002-07-23 22:03:41 +00:00
Chris Lattner b0cec70cbc Incorporate ConstantMerge.h into IPO.h
llvm-svn: 3035
2002-07-23 19:57:40 +00:00
Chris Lattner b28b680155 *** empty log message ***
llvm-svn: 3016
2002-07-23 18:06:35 +00:00
Chris Lattner 6788f25f99 * Remove getPassName implementation
* Register all Passes

llvm-svn: 3015
2002-07-23 18:06:30 +00:00
Chris Lattner 75a210a63d * Break the two different behaviors of SimpleStructMutation into two subclasses
* Register the passes

llvm-svn: 3013
2002-07-23 18:03:11 +00:00
Chris Lattner 784d54ba4b * Remove lots of dead stuff
* Register Pass

llvm-svn: 3011
2002-07-23 18:01:39 +00:00
Chris Lattner a896b08b5c *** empty log message ***
llvm-svn: 3002
2002-07-23 17:52:38 +00:00
Chris Lattner f5cad15a67 *** empty log message ***
llvm-svn: 2985
2002-07-22 02:10:13 +00:00
Chris Lattner 6801fdf009 Seperate stats for DCE'd functions and vars
llvm-svn: 2961
2002-07-18 06:40:04 +00:00
Chris Lattner 6f21961d67 *** empty log message ***
llvm-svn: 2959
2002-07-18 04:43:20 +00:00
Chris Lattner 72f9a86d1e Only functions with external linkage can be resolved to function declarations.
This change fixes programs that have multiple functions named the same thing,
where are least one of them is static/internal.

llvm-svn: 2954
2002-07-18 03:01:24 +00:00
Chris Lattner dfe041880d * Correctly get prototype for void*malloc(size_t)
llvm-svn: 2951
2002-07-18 00:18:01 +00:00
Chris Lattner 87d180e7c6 Disable pool allocation stuff until data structure analysis is sorted back out
llvm-svn: 2869
2002-07-10 22:36:47 +00:00
Chris Lattner 33422fedc2 *** empty log message ***
llvm-svn: 2813
2002-06-30 16:25:25 +00:00
Anand Shukla 2bc6419a82 changes to make it compatible with 64bit gcc
llvm-svn: 2792
2002-06-25 21:07:58 +00:00
Chris Lattner 113f4f4609 MEGAPATCH checkin.
For details, See: docs/2002-06-25-MegaPatchInfo.txt

llvm-svn: 2779
2002-06-25 16:13:24 +00:00
Chris Lattner 7076ff29ed MEGAPATCH checkin.
For details, See: docs/2002-06-25-MegaPatchInfo.txt

llvm-svn: 2778
2002-06-25 16:13:21 +00:00
Chris Lattner 2ae9cda097 Remove DynamicConstantMerge pass, because it did not fit in with the Pass
system correctly.

llvm-svn: 2772
2002-06-25 15:55:29 +00:00
Chris Lattner 6eeda027c7 Remove "fixers" for problems in GCC generated code that cannot be generated
anymore.

llvm-svn: 2771
2002-06-25 15:55:03 +00:00
Chris Lattner eef79f1af4 Do not remove type names that contain a .
llvm-svn: 2747
2002-05-26 20:17:35 +00:00
Chris Lattner 1eb9e6cc47 Fix "unimplemented features":
test/Regression/Transforms/FunctionResolve/retmismatch[12].ll

This makes it much more useful for running benchmarks that are missing
prototypes for some functions.

llvm-svn: 2745
2002-05-24 21:33:26 +00:00
Chris Lattner 5aa9e3e702 Split the FunctionResolution pass out of CleanGCCOutput.cpp.
llvm-svn: 2742
2002-05-24 20:42:13 +00:00
Chris Lattner e3da2980ad Support programs that do not #include <malloc.h> or give a full prototype
for malloc and free.  Lots of crufty benchmarks are using stuff like:
char *malloc();
void free();

to forward declare malloc and free.  Now we recognize and raise these forms

llvm-svn: 2740
2002-05-24 20:29:18 +00:00