1010
1111#include < sys/time.h>
1212
13- OPT_CLI_ONCE ();
14- PASSICLI_ONCE ();
13+ OptParamParser* OptParamParser::__OptParamParser = NULL ;
14+ std::vector<const PassTimer*> PassTimer::expiredTimers;
15+
16+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<bool >);
17+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<int >);
18+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<unsigned >);
19+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<unsigned long long >);
20+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<double >);
21+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<float >);
22+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<std::string>);
23+ TEMPLATE_INSTANTIATION (class cl ::basic_parser<char >);
24+
25+ bool di_debug;
26+ std::string di_debug_pass;
27+
28+ BPatch bpatch;
1529
1630void EXIT (int status)
1731{
@@ -25,21 +39,6 @@ void exit_usage(string err, OptParamParser *parser)
2539 EXIT (1 );
2640}
2741
28- /* Standard command-line options. */
29- #define STD_CL_OPTS () \
30- STD_GEN_CL_OPTS (); \
31- cl::opt<bool > \
32- detach (" detach" , \
33- cl::desc (" Detach immediately." ), \
34- cl::init(true )); \
35- cl::opt<bool > \
36- quit (" quit" , \
37- cl::desc (" Quit immediately." ), \
38- cl::init(false )); \
39- cl::opt<bool > \
40- forceRewriting (" force-rewriting" , \
41- cl::desc (" Force rewriting even when not necessary." ), \
42- cl::init(false ))
4342
4443int main (int argc, char **argv)
4544{
@@ -55,7 +54,13 @@ int main(int argc, char **argv)
5554 ret = parser->parse (err);
5655 if (ret < 0 )
5756 exit_usage (err, parser);
58- STD_CL_OPTS ();
57+
58+ cl::opt<bool > __PASS_DEBUG (" debug" , cl::desc (" Enables debugging for all the passes." ), cl::init (false ));
59+ cl::opt<std::string> __PASS_DEBUG_PASS (" debug-pass" , cl::desc (" Enables debugging for a specific pass." ), cl::init (" " ));
60+ cl::opt<bool > __CL_TIME_PASSES (" time-passes" , cl::desc (" Time each pass and print elapsed time." ), cl::init (false ));
61+ cl::opt<bool > detach (" detach" , cl::desc (" Detach immediately." ), cl::init (true ));
62+ cl::opt<bool > quit (" quit" , cl::desc (" Quit immediately." ), cl::init (false ));
63+ cl::opt<bool > forceRewriting (" force-rewriting" , cl::desc (" Force rewriting even when not necessary." ), cl::init (false ));
5964
6065 TimeRegion *dyninstMainTR = new TimeRegion (PassTimer::getPassTimer (" di-opt.main" , __CL_TIME_PASSES));
6166 TimeRegion *untilDetachTR = new TimeRegion (PassTimer::getPassTimer (" di-opt.detached" , __CL_TIME_PASSES));
@@ -69,6 +74,9 @@ int main(int argc, char **argv)
6974 if (ret < 0 )
7075 exit_usage (err, parser);
7176
77+ di_debug = __PASS_DEBUG.getValue ();
78+ di_debug_pass = __PASS_DEBUG_PASS.getValue ();
79+
7280 vector<OptParam> passes = parser->getPasses ();
7381 for (unsigned i=0 ;i<passes.size ();i++) {
7482 ModulePass *pass = dynamic_cast <ModulePass*>(passes[i].owner );
0 commit comments