<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/152673>152673</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [llvm 20.1.4]DominatorTreeAnalysis failed to be used
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          kdr521
      </td>
    </tr>
</table>

<pre>
    Recently, while I was working on the llvm project development, I wanted to obtain the dominating tree analysis results on the function, but was told the following error:

`Exception Code: 0xC0000005
 #0 0x00007ffb9eca0709 llvm::AnalysisManager<llvm::Function>::getResultImpl(llvm::AnalysisKey*, llvm::Function&) (D:\project\source_code_obfuscation\Obfuscation_v1.0_bak\build\SplitFunction.dll+0x330709)
 #1 0x00007ffb9eca0579 llvm::AnalysisManager<llvm::Function>::getResultImpl(llvm::AnalysisKey*, llvm::Function&) (D:\project\source_code_obfuscation\Obfuscation_v1.0_bak\build\SplitFunction.dll+0x330579)
 #2 0x00007ffb9eca1386 llvm::DominatorTreeAnalysis::Result& llvm::AnalysisManager<llvm::Function>::getResult<llvm::DominatorTreeAnalysis>(llvm::Function&) (D:\project\source_code_obfuscation\Obfuscation_v1.0_bak\build\SplitFunction.dll+0x331386)
 #3 0x00007ffb9e97849e TestPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (D:\project\source_code_obfuscation\Obfuscation_v1.0_bak\build\SplitFunction.dll+0x849e)
 #4 0x00007ffb9ef0182a llvm::detail::PassModel<llvm::Function, TestPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (D:\project\source_code_obfuscation\Obfuscation_v1.0_bak\build\SplitFunction.dll+0x59182a)
 #5 0x00007ff6a0e48889 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x15e8889)
 #6 0x00007ff6a233c0d1 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x2adc0d1)
 #7 0x00007ff6a1ff05ab llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x27905ab)
 #8 0x00007ff6a2338ab1 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x2ad8ab1)
 #9 0x00007ff6a0e42d29 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x15e2d29)
#10 0x00007ff6a15d6ba3 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x1d76ba3)
#11 0x00007ff6a39181b6 optMain (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x40b81b6)
#12 0x00007ff6a391e5b1 main (D:\project\source_code_obfuscation\llvm-20.1.4\build\bin\opt.exe+0x40be5b1)
#13 0x00007ff69f8610c9 __tmainCRTStartup D:/W/B/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:237:8
#14 0x00007ff69f861416 .l_start D:/W/B/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:124:3
#15 0x00007ffc16a87374 (C:\windows\System32\KERNEL32.DLL+0x17374)
#16 0x00007ffc1889cc91 (C:\windows\SYSTEM32\ntdll.dll+0x4cc91)
`


This is my code:

.h
`struct TestPass : public llvm::PassInfoMixin<TestPass> {
 llvm::PreservedAnalyses run(llvm::Function &F, llvm::FunctionAnalysisManager &FAM);
};
`

.c

`PreservedAnalyses TestPass::run(llvm::Function &F, llvm::FunctionAnalysisManager &FAM) {
    auto &DT = FAM.getResult<llvm::DominatorTreeAnalysis>(F);
    auto &LI = FAM.getResult<llvm::LoopAnalysis>(F);

    return llvm::PreservedAnalyses::all();
}


extern "C" LLVM_ATTRIBUTE_WEAK ::llvm::PassPluginLibraryInfo llvmGetPassPluginInfo()
{
    return {
 LLVM_PLUGIN_API_VERSION,
        "SplitFunction",
        "v1.0",
 [](PassBuilder &PB)
        {
 PB.registerAnalysisRegistrationCallback([](FunctionAnalysisManager &FAM)
 {
                llvm::errs() << "Registering DominatorTreeAnalysis and LoopAnalysis\n";
 FAM.registerPass([] { return DominatorTreeAnalysis(); });
 FAM.registerPass([] { return LoopAnalysis(); });
            });

 PB.registerPipelineParsingCallback([](StringRef Name, FunctionPassManager &FPM, ArrayRef<PassBuilder::PipelineElement> InnerPipeline)
            {
 if (Name != "test")    return false;
 FPM.addPass(TestPass());
                return true;
            });
 }
    };
}`



What was the reason for not registering?
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWVuT2rjW_TXqF1UoW7KN_cCD2w1TXYGEopmkvidKtjagL8KiJLkv__6UfMGGpjNJz8mcM2dcXQ3osvfaS0vSlsyMEbsSYILCWxTe3bDK7pWefOM6JP5NrvjLZAUFlFa-IJLhp72QgO_xEzP4SelvotxhVWK7Byzl4wEftfp_KCzm8AhSHQ9QWtfNdSgtcGwVVrllounC1UGUzDojVgNgVjL5YoTBGkwlrelMb6uysEKVzlRe2dq7VZI3lUpK9eRsgNZKI5oir_6LvOlzAUfXEWeKA6Ip9p4zr35C5KUYEeph79n9Hm-3eQIF88ZeUofi7NA0bREtWMl2oBHN-rpZh4pOm4Id2FUN_P5wlIjEr818hBdEUhfGFTMkQiTBiMR3riLMWi5RmBlV6QI2heKwUfm2MgWre4TZ5_7X5tEfeZucfUNhlldCchRmD0cpbOdgxKVE5NZ7ptRFiUjScuBfchCO_wkchOMBB-SCA5_G0QDgXaNUpdcaoIukqWrCRST605SdNXvD4_SM0_8Eb46Znjd6xlsyjoME8BqMXTLTEqSr8m3Q2TtY-8uCdcH0oQZnoW49PyZsgJ6DZUI2313wC8VBXo-BZD1F72Kgk87fl9owcfT15IY9uRHzIIjjeLgG1YR-D_vfn0Zn6QPxRv4oGLCXC1enjnYEz1Az54fgyOmpi4bUEUoLj_vv1uVfQPk_Z6gI424w-qEaD4fK3269kOUDzAvFKwlr1eFzQ5BydrRNWvM6-qbDT8XedvnVkY8TF1sfeXwh0pjlPyfSLtTsB_l6ByFvaey_l2XGHY89y8nFKko4-ZFV9Bq3_6OU-SE4UhrKXO7rnU3JkEc5owPEuqpVtRRHkKKEsyAfrBblbgXba6p8Ffua6R3YBSv2tZ30Wu1c5Jrpl_tyq5r8-bKVUvJzZY-VnQl5xcifqn4jnFRr9uJKh4NVcyKrnShfr-h9e2N5U3Y6wNHsUQmOz2h0tm7dgIFuhv7aPqGOdmOVapeIJoqPouTfa_UFtNgK0F273NX89OcvUyIfO631SvSHSqSJH_t5hNXRLtxx-ddgCLzceekxkAsMEOY-PvxSAM5FD2BwnoiSbRz5XpHgzcY6DNlq_WCZttUR11DI7Csis1tEZkYXiMwOotw9fXiKguH3D4W2iMxO_-EZRgWiKaFjRNO4dRtcug38CI_kxjh__wZvPgkQTWnrbZDsFn7E4jEdB47grCH4SZRcPRmXO78YCwdKUJh9nK4-TeeUjO7m80Y_rldPXDS0GcdJUST-dZv_97CeLmqbpeVSnlLywHVpDUZee4nipeu9MFgYfHjBRXOL0pSP9k1DY3VV2NOBBiOa4mOVS1Fc7DxuVVuIZ7dkZP0JcYrR-NZtX4PGGgzoR-DNdgEGv5X1YUSi2fWrhIutpm6ZLurVxblD47v2SxfqqDjdG70G8GMn2vfA6cLHGLPKKldxt8aI3uFZuhj99N3A7BTh0OL8_g8szpU6vmWotaXBVrr83jA1xczJKT4jupMSPFvQjiWSIULwfP5lsUnX69X97e_r6ebrNP2IGxvXNprB3liD-A1sX-lKW6_O5e055rag9rec__7b_adNurzffJmuHu4_f0Ika5u7BxFydmJFhLxq4E65fXlzc4pIPNjIHOnL2zYx6zo2KJa3Iw07YSzojvFV_VvXi2fGpMxZ8c1F0xn-Y007GKeoh0_PJGhtGoowohmimYtk1SIR5Q5fVRVmJcdn6gizmpNGY05RXTTNdUaL2sHp6L8u104j2CnkJNofMniG57qdwTMsvxiALq1bMm1EubvG_Skrwp_Yoc6Rh6eN4UgsF652kP4ME5tGzK27qYT6ZpxO8X1Z9jDO9TLQjNi6pdwBwIj4biojQiwYW6swGUh9y6SBjsvlYsQ4b2nsb5xqwq4xNbBjdQXfpxI3M7srPk32wdaBvPTrnrX39XvAGphRJd4qjUtlse7Fh-jshk8oT2jCbmDij8MgCoIwjm_2k4gX26iIci9P4iQpghx8GhdJDJTxgPLgRkyIR0Iv9mIv8SMSjwACHkY83LKAEs8rUODBgQk5crNhpPTuRhhTwcQPSTSmN5LlIE33BkRP6uQlr3YGBZ4Uxpq-nxVW1u9K6rcdXYJzd33qbJmQzTuPHHBlgN9UWk721h5Nk1AgMtsJu6_yUaEOiMzqydp8fOiyLDKrsRpEZi3cxwn5VwAAAP__iEbjdQ">