@@ -795,6 +795,20 @@ LLVMRustOptimize(
795795 CGSCCAnalysisManager CGAM;
796796 ModuleAnalysisManager MAM;
797797
798+ if (LLVMPluginsLen) {
799+ auto PluginsStr = StringRef (LLVMPlugins, LLVMPluginsLen);
800+ SmallVector<StringRef> Plugins;
801+ PluginsStr.split (Plugins, ' ,' , -1 , false );
802+ for (auto PluginPath: Plugins) {
803+ auto Plugin = PassPlugin::Load (PluginPath.str ());
804+ if (!Plugin) {
805+ LLVMRustSetLastError ((" Failed to load pass plugin" + PluginPath.str ()).c_str ());
806+ return LLVMRustResult::Failure;
807+ }
808+ Plugin->registerPassBuilderCallbacks (PB);
809+ }
810+ }
811+
798812 FAM.registerPass ([&] { return PB.buildDefaultAAPipeline (); });
799813
800814 Triple TargetTriple (TheModule->getTargetTriple ());
@@ -918,20 +932,6 @@ LLVMRustOptimize(
918932 }
919933 }
920934
921- if (LLVMPluginsLen) {
922- auto PluginsStr = StringRef (LLVMPlugins, LLVMPluginsLen);
923- SmallVector<StringRef> Plugins;
924- PluginsStr.split (Plugins, ' ,' , -1 , false );
925- for (auto PluginPath: Plugins) {
926- auto Plugin = PassPlugin::Load (PluginPath.str ());
927- if (!Plugin) {
928- LLVMRustSetLastError ((" Failed to load pass plugin" + PluginPath.str ()).c_str ());
929- return LLVMRustResult::Failure;
930- }
931- Plugin->registerPassBuilderCallbacks (PB);
932- }
933- }
934-
935935 ModulePassManager MPM;
936936 bool NeedThinLTOBufferPasses = UseThinLTOBuffers;
937937 if (!NoPrepopulatePasses) {
0 commit comments