You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.2 KiB
117 lines
4.2 KiB
3 months ago
|
diff -rup annobin.orig/clang-plugin/annobin.cpp annobin-11.08/clang-plugin/annobin.cpp
|
||
|
--- annobin.orig/clang-plugin/annobin.cpp 2023-06-08 10:05:52.228680839 +0100
|
||
|
+++ annobin-11.08/clang-plugin/annobin.cpp 2023-06-08 10:06:36.706698862 +0100
|
||
|
@@ -111,7 +111,11 @@ private:
|
||
|
{
|
||
|
static char buf [6400]; // FIXME: Use a dynmically allocated buffer.
|
||
|
|
||
|
+#if CLANG_VERSION_MAJOR > 15
|
||
|
+ is_32bit = Context.getTargetInfo().getPointerWidth(LangAS::Default) == 32;
|
||
|
+#else
|
||
|
is_32bit = Context.getTargetInfo().getPointerWidth(0) == 32;
|
||
|
+#endif
|
||
|
|
||
|
SourceManager & src = Context.getSourceManager ();
|
||
|
std::string filename = src.getFilename (src.getLocForStartOfFile (src.getMainFileID ())).str ().c_str ();
|
||
|
diff -rup annobin.orig/llvm-plugin/annobin.cpp annobin-11.08/llvm-plugin/annobin.cpp
|
||
|
--- annobin.orig/llvm-plugin/annobin.cpp 2023-06-08 10:05:52.226680839 +0100
|
||
|
+++ annobin-11.08/llvm-plugin/annobin.cpp 2023-06-08 10:13:00.610773144 +0100
|
||
|
@@ -590,41 +590,48 @@ char AnnobinModulePassLegacy::ID = 0;
|
||
|
char AnnobinModulePass::ID = 0;
|
||
|
#endif
|
||
|
|
||
|
+// NB. The choice of when to run the passes is critical. Using
|
||
|
+// EP_EarlyAsPossible for example will run all the passes as Function passes,
|
||
|
+// even if they are Module passes. Whist using EP_ModuleOptimizerEarly will
|
||
|
+// not run the pass at -O0. Hence we use three different pass levels.
|
||
|
+
|
||
|
+#if __clang_major__ > 15
|
||
|
+
|
||
|
+// Nothing to do here. :-)
|
||
|
+
|
||
|
+#elif __clang_major__ > 12
|
||
|
+
|
||
|
static void
|
||
|
-#if __clang_major__ > 12
|
||
|
registerAnnobinModulePassLegacy (const PassManagerBuilder & PMB,
|
||
|
legacy::PassManagerBase & PM)
|
||
|
-#else
|
||
|
-registerAnnobinModulePass (const PassManagerBuilder & PMB,
|
||
|
- legacy::PassManagerBase & PM)
|
||
|
-#endif
|
||
|
{
|
||
|
-#if __clang_major__ > 12
|
||
|
static RegisterPass<AnnobinModulePassLegacy> X("annobin", "Annobin Module Pass");
|
||
|
PM.add (createAnnobinModulePassLegacy ((int) PMB.OptLevel));
|
||
|
-#else
|
||
|
- static RegisterPass<AnnobinModulePass> X("annobin", "Annobin Module Pass");
|
||
|
- PM.add (createAnnobinModulePass ((int) PMB.OptLevel));
|
||
|
-#endif
|
||
|
}
|
||
|
|
||
|
-// NB. The choice of when to run the passes is critical. Using
|
||
|
-// EP_EarlyAsPossible for example will run all the passes as Function passes,
|
||
|
-// even if they are Module passes. Whist using EP_ModuleOptimizerEarly will
|
||
|
-// not run the pass at -O0. Hence we use three different pass levels.
|
||
|
-#if __clang_major__ > 12
|
||
|
static RegisterStandardPasses
|
||
|
RegisterMyPass2 (PassManagerBuilder::EP_EnabledOnOptLevel0, registerAnnobinModulePassLegacy);
|
||
|
|
||
|
static RegisterStandardPasses
|
||
|
RegisterMyPass3 (PassManagerBuilder::EP_ModuleOptimizerEarly, registerAnnobinModulePassLegacy);
|
||
|
-#else
|
||
|
+
|
||
|
+#else /* __clang_major__ < 13 */
|
||
|
+
|
||
|
+static void
|
||
|
+registerAnnobinModulePass (const PassManagerBuilder & PMB,
|
||
|
+ legacy::PassManagerBase & PM)
|
||
|
+{
|
||
|
+ static RegisterPass<AnnobinModulePass> X("annobin", "Annobin Module Pass");
|
||
|
+ PM.add (createAnnobinModulePass ((int) PMB.OptLevel));
|
||
|
+}
|
||
|
+
|
||
|
static RegisterStandardPasses
|
||
|
RegisterMyPass2 (PassManagerBuilder::EP_EnabledOnOptLevel0, registerAnnobinModulePass);
|
||
|
|
||
|
static RegisterStandardPasses
|
||
|
RegisterMyPass3 (PassManagerBuilder::EP_ModuleOptimizerEarly, registerAnnobinModulePass);
|
||
|
-#endif
|
||
|
+
|
||
|
+#endif /* Static pass registering. */
|
||
|
|
||
|
// -------------------------------------------------------------------------------------
|
||
|
// Function Pass
|
||
|
@@ -657,6 +664,13 @@ namespace
|
||
|
|
||
|
char AnnobinFunctionPass::ID = 0;
|
||
|
|
||
|
+#if __clang_major__ > 15
|
||
|
+
|
||
|
+static RegisterPass<AnnobinFunctionPass>
|
||
|
+X ("annobin", "Annobin Function Pass", false /* Does not modify the CFG */, false /* Analysis pass */);
|
||
|
+
|
||
|
+#else
|
||
|
+
|
||
|
static void
|
||
|
registerAnnobinFunctionPass (const PassManagerBuilder & PMB,
|
||
|
legacy::PassManagerBase & PM)
|
||
|
@@ -666,3 +680,5 @@ registerAnnobinFunctionPass (const PassM
|
||
|
|
||
|
static RegisterStandardPasses
|
||
|
RegisterMyPass1 (PassManagerBuilder::EP_EarlyAsPossible, registerAnnobinFunctionPass);
|
||
|
+
|
||
|
+#endif
|
||
|
--- annobin.orig/llvm-plugin/annobin.cpp 2023-06-29 11:07:13.216090636 +0100
|
||
|
+++ annobin-11.08/llvm-plugin/annobin.cpp 2023-06-29 11:09:12.981140807 +0100
|
||
|
@@ -641,8 +641,8 @@ namespace
|
||
|
{
|
||
|
class AnnobinFunctionPass : public FunctionPass
|
||
|
{
|
||
|
- static char ID;
|
||
|
public:
|
||
|
+ static char ID;
|
||
|
AnnobinFunctionPass() : FunctionPass (ID) {}
|
||
|
|
||
|
virtual bool
|