142 Commits

Author SHA1 Message Date
Devang Patel
ec2b9a7850 Current pass manager, not the parent pass manager, assumes the role of
last user when one of the managed pass uses info provided by parent pass
manager.

This was exposed by LPPassManager work.

llvm-svn: 34936
2007-03-05 22:57:49 +00:00
Devang Patel
003a559633 Avoid constructing std::strings unless pass debugging is ON.
llvm-svn: 34933
2007-03-05 20:01:30 +00:00
Devang Patel
7ebf09dbca Account for time consumed by releaseMemory() properly.
llvm-svn: 34932
2007-03-05 18:20:51 +00:00
Jeff Cohen
b622c11f77 Unbreak VC++ build.
llvm-svn: 34917
2007-03-05 00:00:42 +00:00
Devang Patel
28349abeab Make getPassManagerType() const.
llvm-svn: 34669
2007-02-27 15:00:39 +00:00
Chris Lattner
9df8be40fe temporarily revert Devang's most recent patch, which caused a large
compile-time regression in LLC.

llvm-svn: 34385
2007-02-17 23:14:24 +00:00
Devang Patel
98354dabc1 Use inverted map to speedup collectLastUses().
llvm-svn: 34364
2007-02-17 03:53:44 +00:00
Devang Patel
4d06ace0ef Do not drop transferred last uses on the floor.
Use handleLastUserOverflow().

llvm-svn: 34006
2007-02-07 19:37:53 +00:00
Devang Patel
3f806969ed Fix PR1158
Do not insert Analysis pass, if it is already available.

llvm-svn: 33915
2007-02-05 19:34:17 +00:00
Devang Patel
e3858e6674 cvs commit
llvm-svn: 33765
2007-02-01 22:08:25 +00:00
Reid Spencer
5301e7c605 For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid
confusion with external linkage types.

llvm-svn: 33663
2007-01-30 20:08:39 +00:00
Devang Patel
1c3633e461 - Undo previous check-in (i.e. Do not export TimingInfo class through
PassManagers.h).

- Add StopPassTimer() and StartPassTimer() to expose TimingInfo to
CallGraphPassManager

- Use these two APIs in CalLgraphPassManager to measure timings.

llvm-svn: 33638
2007-01-29 23:10:37 +00:00
Devang Patel
55bcb50840 Move TimingInfo into PassManagers.h so that other libs can use it.
llvm-svn: 33626
2007-01-29 20:06:26 +00:00
Devang Patel
23f8aa921e Update ModulePass::assignPassManager() to take into account Preferred
Pass Manager Type.

llvm-svn: 33308
2007-01-17 21:19:23 +00:00
Devang Patel
fd41843243 s/PassDebugging_New/PassDebugging/g
llvm-svn: 33307
2007-01-17 20:33:36 +00:00
Devang Patel
dffca63396 Update assignPassManager() signature to allow selection of preferred
pass manager type. This allows new FPPassManager to select Call Graph
Pass Manager (if available) as its parent.

llvm-svn: 33306
2007-01-17 20:30:17 +00:00
Devang Patel
d85662f67d Pass manager may require certain analysis. In such cases, initially
pass manager is last user.

llvm-svn: 33273
2007-01-16 22:38:10 +00:00
Devang Patel
3312f75071 Undo last check-in.
Remove setupPassManager() and its use.

llvm-svn: 33270
2007-01-16 21:43:18 +00:00
Devang Patel
68dc3d2263 Setup pass manager before scheduling required analysis.
llvm-svn: 33262
2007-01-16 19:46:09 +00:00
Devang Patel
4268fc08d3 Code refactoring.
llvm-svn: 33245
2007-01-16 02:00:38 +00:00
Devang Patel
6975b6ec09 Remove extra white spaces. Fix comments.
llvm-svn: 33244
2007-01-15 23:06:56 +00:00
Devang Patel
39786a90d0 Do not record last users of Pass Manager.
llvm-svn: 33243
2007-01-15 20:31:54 +00:00
Devang Patel
f85793d171 s/addPassToManager/add/g
llvm-svn: 33138
2007-01-12 20:07:16 +00:00
Devang Patel
e759955c66 Move PMTopLevelManager, PMDataManager and FPPassManger classes into
new PassManagers.h header.

This opens door for implementing CGPassManager in IPA library.

llvm-svn: 33135
2007-01-12 18:52:44 +00:00
Devang Patel
0f08004ac0 Remove dead code.
llvm-svn: 33121
2007-01-12 17:23:48 +00:00
Devang Patel
ad98d23f16 Start using PMStack. Now each pass is responsibe for assinging
a pass manager for itself.

There is some opportunity to remove some dead code from PassManager.cpp.

llvm-svn: 33087
2007-01-11 22:15:30 +00:00
Devang Patel
ac99eca428 Use getPassManagerType() instead of dynamic_cast.
llvm-svn: 33078
2007-01-11 19:59:06 +00:00
Devang Patel
3b3f89900e Add PassManagerType enum.
llvm-svn: 33065
2007-01-11 01:10:25 +00:00
Devang Patel
15701b5c0d Robustify assingPassManager() for Module, Function and Basic Block
Passes.

Robustify PMStack.push()

Add dump() routine to print PMStack.

llvm-svn: 33062
2007-01-11 00:19:00 +00:00
Devang Patel
1c56a638a4 Add PMStack, a Pass Manager stack.
Eventually, Top level pass managers  will use this to keep track of
active pass managers. Eass pass will also learn how to find appropriate
manager from these managers stack.

llvm-svn: 33018
2007-01-08 19:29:38 +00:00
Devang Patel
b66334b73b 1) Remove old AnalysisResolver.
2) Rename AnalysisResolver_New as AnalysisResolver

llvm-svn: 32938
2007-01-05 22:47:07 +00:00
Devang Patel
c6b5a554a4 Remove old pass manager.
llvm-svn: 32927
2007-01-05 20:16:23 +00:00
Devang Patel
e3068403bd At the beginning of run, initialize analyis info availability for _ALL_
pass managers. Otherwise, stale available analysis info, from the managers not
yet run, may cause pass manager to take wrong turn.

This fixes CBE test failures reported by nightly tester.

llvm-svn: 32726
2006-12-21 00:16:50 +00:00
Devang Patel
cb5128a8d9 Now, there is additional layer, referred in the comment,
in place to handle this correctly.

llvm-svn: 32684
2006-12-19 20:12:38 +00:00
Devang Patel
67d6a5e411 s/BasicBlockPassManager/BBPassManager/g
s/ModulePassManager/MPPassManager/g
s/FunctionPassManagerImpl_New/FunctionPassManagerImpl/g
s/PassManagerImpl_New/PassManagerImpl/g

Introduce FPPassManager to manage function passes and
BBPassManagers.

Now FunctionPassManagerImpl is an implementation class
used by externally visible FunctionPassManager to manage
FPPassManagers.

Module pass manager (MPPassManager) now manages FPPassManagers
and ModulePasses.

llvm-svn: 32679
2006-12-19 19:46:59 +00:00
Devang Patel
abfbe3bfda Add getNumContainedPasses() and getContainedPass() inteface and use
it instead of passVectorBegin/End().

llvm-svn: 32620
2006-12-16 00:56:26 +00:00
Devang Patel
56d48ec501 Cosmetic changes, based on Chris's review.
llvm-svn: 32618
2006-12-15 22:57:49 +00:00
Devang Patel
991aebacba Mark dump* routines const routines.
llvm-svn: 32610
2006-12-15 20:13:01 +00:00
Devang Patel
ffca910d45 Move PMTopLevelManager and TImingInfo into anon namespace.
llvm-svn: 32606
2006-12-15 19:39:30 +00:00
Devang Patel
832bc079b2 s/ForcedLastUses/TransferLastUses/g
Register pass has the its last user, otherwise sometimes no one will claim
LastUse.

Handle transferred last uses from child pass manager.

llvm-svn: 32589
2006-12-15 00:08:26 +00:00
Chris Lattner
ce22ca3fc6 random minor typographical changes
llvm-svn: 32579
2006-12-14 18:22:14 +00:00
Devang Patel
b8817b9b6e Add -time-passes support.
llvm-svn: 32574
2006-12-14 00:59:42 +00:00
Devang Patel
f6d1d21355 Add debug-pass=Details support to print Required and Preserved Set info.
llvm-svn: 32573
2006-12-14 00:25:06 +00:00
Devang Patel
93a197c202 Add " Made Modification " messages in debug-pass=Executions output.
llvm-svn: 32572
2006-12-14 00:08:04 +00:00
Devang Patel
200d305c02 Add debug-pass=Executions support in new pass manager.
llvm-svn: 32571
2006-12-13 23:50:44 +00:00
Devang Patel
cfd70c4a46 Add -pass-debug=Arguments support in new manager.
llvm-svn: 32567
2006-12-13 22:10:00 +00:00
Chris Lattner
f0f611a76a fit in 80 cols
llvm-svn: 32563
2006-12-13 21:56:10 +00:00
Devang Patel
03fb587348 Using PDL as a prefix for PassDebugLevel enums is not a good idea.
Fix it.

llvm-svn: 32562
2006-12-13 21:13:31 +00:00
Devang Patel
f1567a511f Move enum PassDebugLevel from PassManagerT.h to Pass.h.
Use PDL as the prefix for these enums.
Define and use PassDebugging_New in new PassManager.

llvm-svn: 32554
2006-12-13 20:03:48 +00:00
Devang Patel
b67904d1dc Add #ifdef switch toggle between old and new pass manager. However,
continue to use old pass manager at the moment. To use new manager
remove #define USE_OLD_PASSMANAGER 1 from Pass.h

llvm-svn: 32525
2006-12-13 02:36:01 +00:00