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

    <tr>
        <th>Summary</th>
        <td>
            [openmp] [opt] Attributor assertion failure
        </td>
    </tr>

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

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

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

<pre>
    This started failing after the following commit

https://reviews.llvm.org/rG732bdb607341854de8185bd71cec00e8cb04bad2
[Attributor] Avoid the type check in getCalledFunction

It showed up in a downstream build of DeviceRTL. It turns out that it is reproducible with the trunk compiler as well. To reproduce, run the following on the attached .bc file. 
% opt -O3 -openmp-opt-disable -attributor-enable=module test.bc -o out.bc

The problem disappears if -attributor-enable=module is removed.

Here's the assertion failure. 

```
opt: /home/dhchakra/git/aomp-trunk/llvm-project/llvm/lib/IR/Value.cpp:922: llvm::Align llvm::Value::getPointerAlignment(const llvm::DataLayout&) const: Assertion `getType()->isPointerTy() && "must be pointer"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt -O3 -openmp-opt-disable -attributor-enable=module test.bc -o out.bc
 #0 0x000055de5674136f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x21c436f)
 #1 0x000055de5673eac4 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007ff84f319420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007ff84edb600b raise /build/glibc-SzIz7B/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #4 0x00007ff84ed95859 abort /build/glibc-SzIz7B/glibc-2.31/stdlib/abort.c:81:7
 #5 0x00007ff84ed95729 get_sysdep_segment_value /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:509:8
 #6 0x00007ff84ed95729 _nl_load_domain /build/glibc-SzIz7B/glibc-2.31/intl/loadmsgcat.c:970:34
 #7 0x00007ff84eda6fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x000055de560b204e llvm::Value::getPointerAlignment(llvm::DataLayout const&) const (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b3504e)
 #9 0x000055de561824ec (anonymous namespace)::AAAlignImpl::initialize(llvm::Attributor&) AttributorAttributes.cpp:0:0
#10 0x000055de56117403 llvm::AAAlign const* llvm::Attributor::getOrCreateAAFor<llvm::AAAlign>(llvm::IRPosition, llvm::AbstractAttribute const*, llvm::DepClassTy, bool, bool) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b9a403)
#11 0x000055de56182c6b (anonymous namespace)::AAAlignCallSiteArgument::updateImpl(llvm::Attributor&) AttributorAttributes.cpp:0:0
#12 0x000055de560eea1a llvm::AbstractAttribute::update(llvm::Attributor&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b71a1a)
#13 0x000055de56101edb llvm::Attributor::updateAA(llvm::AbstractAttribute&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b84edb)
#14 0x000055de561175e5 llvm::AAAlign const* llvm::Attributor::getOrCreateAAFor<llvm::AAAlign>(llvm::IRPosition, llvm::AbstractAttribute const*, llvm::DepClassTy, bool, bool) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b9a5e5)
#15 0x000055de56181ff1 void (anonymous namespace)::followUsesInContext<(anonymous namespace)::AAAlignImpl, llvm::IncIntegerState<unsigned long, 4294967296ul, 1ul>>((anonymous namespace)::AAAlignImpl&, llvm::Attributor&, llvm::MustBeExecutedContextExplorer&, llvm::Instruction const*, llvm::SetVector<llvm::Use const*, std::vector<llvm::Use const*, std::allocator<llvm::Use const*>>, llvm::DenseSet<llvm::Use const*, llvm::DenseMapInfo<llvm::Use const*, void>>, 0u>&, llvm::IncIntegerState<unsigned long, 4294967296ul, 1ul>&) AttributorAttributes.cpp:0:0
#16 0x000055de56182619 (anonymous namespace)::AAAlignImpl::initialize(llvm::Attributor&) AttributorAttributes.cpp:0:0
#17 0x000055de56117403 llvm::AAAlign const* llvm::Attributor::getOrCreateAAFor<llvm::AAAlign>(llvm::IRPosition, llvm::AbstractAttribute const*, llvm::DepClassTy, bool, bool) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b9a403)
#18 0x000055de56182c6b (anonymous namespace)::AAAlignCallSiteArgument::updateImpl(llvm::Attributor&) AttributorAttributes.cpp:0:0
#19 0x000055de560eea1a llvm::AbstractAttribute::update(llvm::Attributor&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b71a1a)
#20 0x000055de56101edb llvm::Attributor::updateAA(llvm::AbstractAttribute&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b84edb)
#21 0x000055de561175e5 llvm::AAAlign const* llvm::Attributor::getOrCreateAAFor<llvm::AAAlign>(llvm::IRPosition, llvm::AbstractAttribute const*, llvm::DepClassTy, bool, bool) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b9a5e5)
#22 0x000055de56181ff1 void (anonymous namespace)::followUsesInContext<(anonymous namespace)::AAAlignImpl, llvm::IncIntegerState<unsigned long, 4294967296ul, 1ul>>((anonymous namespace)::AAAlignImpl&, llvm::Attributor&, llvm::MustBeExecutedContextExplorer&, llvm::Instruction const*, llvm::SetVector<llvm::Use const*, std::vector<llvm::Use const*, std::allocator<llvm::Use const*>>, llvm::DenseSet<llvm::Use const*, llvm::DenseMapInfo<llvm::Use const*, void>>, 0u>&, llvm::IncIntegerState<unsigned long, 4294967296ul, 1ul>&) AttributorAttributes.cpp:0:0
#23 0x000055de56182619 (anonymous namespace)::AAAlignImpl::initialize(llvm::Attributor&) AttributorAttributes.cpp:0:0
#24 0x000055de56117403 llvm::AAAlign const* llvm::Attributor::getOrCreateAAFor<llvm::AAAlign>(llvm::IRPosition, llvm::AbstractAttribute const*, llvm::DepClassTy, bool, bool) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b9a403)
#25 0x000055de561197cd llvm::Attributor::identifyDefaultAbstractAttributes(llvm::Function&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b9c7cd)
#26 0x000055de5611eaf7 runAttributorOnFunctions(llvm::InformationCache&, llvm::SetVector<llvm::Function*, std::vector<llvm::Function*, std::allocator<llvm::Function*>>, llvm::DenseSet<llvm::Function*, llvm::DenseMapInfo<llvm::Function*, void>>, 0u>&, llvm::AnalysisGetter&, llvm::CallGraphUpdater&, bool, bool) (.constprop.0) Attributor.cpp:0:0
#27 0x000055de5611fe7c llvm::AttributorPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1ba2e7c)
#28 0x000055de56959866 llvm::detail::PassModel<llvm::Module, llvm::AttributorPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x23dc866)
#29 0x000055de56081e4d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x1b04e4d)
#30 0x000055de54bc5ab5 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x648ab5)
#31 0x000055de54b1c233 main (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x59f233)
#32 0x00007ff84ed97083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#33 0x000055de54bb903e _start (/home/dhchakra/git/aomp-trunk/llvm-project/build/bin/opt+0x63c03e)
Aborted (core dumped)
[test.bc.gz](https://github.com/llvm/llvm-project/files/11902546/test.bc.gz)

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1v46jX_zT0BiXC-P2iF5l0sls9U0017e5thOHY4RkHLMBtM5_-L3CaxGnabXe60s6qUhvbcOCc8zsvHATMWtkogHOUfkLpxRnr3Uqbc7Ey_R3jK_b9rNJic367khZbx4wDgWsmW6kazGoHBrsV4Fq3rb73bVyv19IhcoHIbPhdOddZFM8QXSC6MHAn4d5O2_ZuPdWm8U2_5TGtRJWRPE6iIk0EFFGRViKPOHBCoOAVSSom6Hba9NPMOSOr3mmD0gs8u9NSBDncpgPMV8C_Y6lwA27O2hbEolfcSa0Oxbp02K70PQjcd56YYaHvlXUG2BpXvWwF1jW-gDvJ4dvtlym-dNj1Rlmse4fdijksHZYWG-iMFj2XVQv4XrrVIInp1XePRidbMJhZfA9tO8W3ejcAEJ1j06sjBPXQwJxjfAUCTyuOa9nCFG_FpynWncOTrzGe6A7Uupvozk2EtMyLMGE7cCagfBOKL9Za9C1gB9b5-SbaazGt-CEityvAndFVC2vsJ-s6YMZiWb84ZUBgre9ATA8n-x0MIJrbQRdrwXgDBNfpzV6X4Tcj27_wqTuH4hlGdLHSa0B0IVbeEQ1DdNFIh-iC6XU3CQgjuvCeNOmM_n_gbvvpH7JCdHH5DdHFn6ztYcq7DsWzklI_dyCKZyiezVrZqIPvQDy8NuCutVQOTCBag3KIFlwr6w4GXDDHvrCN7h2iGaIlDgSeyWynNcpIA-520wGiBaLlBMWfpd1OfrsZGnEYn2FE6bq3DleAu4ECUYpoHrDboXz95fPs5jO2fbWWDjNc9Y13LG0cdhqPY66RbtVXU67XB_iMUZPW9mARXWCmBJaKt72AYDtumF3hivHvzjAOW_Y3jvHvWPRrD-rQRKaIlNdGN4atMTNN7wGzP2HJEIT-KRWii3d2eYxoTDB5IISQNBWQZnkSxVl9YFm7scPLtZHKBY1vPQSIFnsiw-6XesgawX5zLL2beGsW76U3op_IA414Emc1ouVegWisQAyMJ_hGNoq1vzMlWu86xVaeodlu44CE_91EdDtRXtdFUsdRmVCCl0sD1mkDS-O26gxR9VBkyyyZtFL1D5NG9UNH51YGmJhaPSVB4ihJKBnJGx-yAZ_xSYUNkxbwgd5NKys-uflx-SP_tPuk0zhCdGGDFoguplP_tbECOu-2vZIPQ8NdkEb1_jNMPeUonqURimfRXpJkLEmZFmmJWaWDpq-TxIkBjTAqMCk8k3zPJD1mktPSL0rLQe6lhcbHyPLO55zX8pXKef1bzcTaNpwNrFNSegH2vLNTvJeqXfqBS6HXTKqfY1nm3oniZM8zH_NkWS2yVzgO9y6TBZeJ41pkI5cpRi5OKkoSeEu6PpWotyn6IF2_e7RGVZySBEaqlCNVooImwD1jprTarHVvsWJrsF1IMeV2eRoWqMt11w4NUkknWSt_jNPQQUE0qLVveHyDE7Hvc8g4C0ZRnpD4cIHcLpFbzEZr557powW-mrkB5mA2W_jW-ZN5UPx5JPjlt2ttZSjO6Pxw7sr69cbtpN8JMKa7gG7eMmv9KjrHldbt_vn-STiqSpaQeGdWj190bFaeVa80q69Ob6SD2Xa1HDr7TjAHweTvZGI6DiIAFrGXsD6U42UZ3h_gPGIRGwEcjwEmEYjqBS8cxJ7NxoI_UfGfkj8sbCP5k-MASyH9CLDnAyyFdIRfehRgUV1HOGz5_iLKhj3VHxbspZpr5eDBoXj-how7AuJS8UvloAFz43xcxPNehb2zwK1WjSdOaJmUWU7LrA-Do7715ggWeQvb7MhU46g77LrqrfsEnx-A9w7EVsnPD12rDTylvvT72z5shZ-x9g24P4G7I9f6w469wzoxdNy9gZa1rebsRfItVmP3UxZuwL3I44j8inWXqtYvDvH-s-dH-vDyBK6_a_G3JujseA3JovJfUBrkH6XBT5UGxb-_NCh_5dKAkl-7NKDRR2nwM6UBpR-lwUdp8J8uDWj8rywN6JNNzUdp8JbSgB5taqIy5-IFkKQA5WS9uYCa9a17oqcdwbM77_qnVrKS51yM9DmqYCNgdY5Nr_aKfFWPYo2F9fFo1sx3zBlfwZNYO5149jr-Zd55jvR02jmkfm3WOeLwiqRzNOI1OWemWLux0v4Gzp3I4L5i_M2wbvVHqHIeCU449zQERWd0NyXjqD8d68fbgBpyftJXr5ndHpmYXo2MfBUOY55V6Yop1sDYDtshu5T5_l7MKOR85MXjgr1MyyLLDsQV4JjcplSv65UW0J4S-pk1OuAz6rs2YMHcgRiQAPt38PF_vwjoNBa8yLIR6EdbkCKC5DAVBqCfF_W_jVdUkQSSUaodH1smFU9ZdbhpML3ykF3LDlqpxgv-jTNSNd-gPioVTyt-y0wD7orxVZhndqr3i6wMMxuf34YC9ZhK6_Zr77reLWR7YpKf6n5GnZkxbONbDy0VMGn7RqonKV13bul8egxfA7__k0q8RPUnGFlLMI904zT7V8_3d5QsKVg12hyNT4eTKuI0jvH23O99madlTeNRfTM-UQZR5qSI8XLZyoovwz2i5VtOILntH898h9fQGeYJZ5FxQv3vnn081r0qSQx4YPz-0MecxPujvlmlwy2pcFfEQLgkAQcRnH7aXkmYNj9QeoFo8ebbGrVsw2WNKCoJTZMM0cXBnDtO48s1Z-I8FmVcsjM4j7KiIFGZReXZ6pwLVtOkFDUpOcQ8K-I8pazmcZxBnrPoTJ5TQmOS0ZJklETllERMVDXhhFWEFVWNEgJrJtvdra6zcJ_kPIvTMj9rWQWtDRfMKB1ubyBKUXpxZs6DYlXfWJSQVlq3vxh25qRrw7W07ZD0AocPF6587dbUp5eLznrTnv_9GzBB6P8FAAD__-WpJJo">