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

    <tr>
        <th>Summary</th>
        <td>
            `clangtk`: Assertion `E->isPRValue() && E->getType()->hasPointerRepresentation()' failed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    When compile below program with `clangtk` using option `-O0`, `clangtk` triggers assertion failure:
```
int a(void) {
  short *b = __builtin_assume_aligned(0, 8);
  for (int i = 0; i < (16 / sizeof(b[1])); i++)
    b[i] = b[i] < 0 ? -1 : 0;
}
```

This behavior can be verified on https://gcc.godbolt.org/z/j6e8xEfeK
Output copied from gcc.godbolt.org:
```
<source>:5:1: warning: non-void function does not return a value [-Wreturn-type]
    5 | }
      | ^
clang: /root/llvm-project/clang/lib/AST/ExprConstant.cpp:8832: bool EvaluatePointer(const clang::Expr*, {anonymous}::LValue&, {anonymous}::EvalInfo&, bool): Assertion `E->isPRValue() && E->getType()->hasPointerRepresentation()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -S --gcc-toolchain=/opt/compiler-explorer/gcc-9.2.0 -fcolor-diagnostics -fno-crash-diagnostics -O0 <source>
1.      <eof> parser at end of file
2.      <source>:1:5: LLVM IR generation of declaration 'a'
3.      <source>:1:5: Generating code for declaration 'a'
 #0 0x000055ec3584093f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3c5293f)
 #1 0x000055ec3583e6ac llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3c506ac)
 #2 0x000055ec35788d98 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f33ffdb0420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f33ff87d00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007f33ff85c859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007f33ff85c729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007f33ff86dfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x000055ec3915b8e3 EvaluatePointer(clang::Expr const*, (anonymous namespace)::LValue&, (anonymous namespace)::EvalInfo&, bool) ExprConstant.cpp:0:0
 #9 0x000055ec39156ee7 (anonymous namespace)::PointerExprEvaluator::VisitBuiltinCallExpr(clang::CallExpr const*, unsigned int) ExprConstant.cpp:0:0
#10 0x000055ec39158732 (anonymous namespace)::PointerExprEvaluator::VisitCallExpr(clang::CallExpr const*) ExprConstant.cpp:0:0
#11 0x000055ec39159f91 clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::PointerExprEvaluator, bool>::Visit(clang::Stmt const*) ExprConstant.cpp:0:0
#12 0x000055ec3915b876 EvaluatePointer(clang::Expr const*, (anonymous namespace)::LValue&, (anonymous namespace)::EvalInfo&, bool) ExprConstant.cpp:0:0
#13 0x000055ec39141ec8 Evaluate(clang::APValue&, (anonymous namespace)::EvalInfo&, clang::Expr const*) ExprConstant.cpp:0:0
#14 0x000055ec3914bc79 EvaluateAsRValue((anonymous namespace)::EvalInfo&, clang::Expr const*, clang::APValue&) ExprConstant.cpp:0:0
#15 0x000055ec3914d3bf clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult&, clang::ASTContext const&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x755f3bf)
#16 0x000055ec35e75428 clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::GlobalDecl, unsigned int, clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4287428)
#17 0x000055ec35f477a3 clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x43597a3)
#18 0x000055ec35f9045d (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) CGExprScalar.cpp:0:0
#19 0x000055ec35f872fc clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) CGExprScalar.cpp:0:0
#20 0x000055ec35f890fb (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) CGExprScalar.cpp:0:0
#21 0x000055ec35f8b7fb (anonymous namespace)::ScalarExprEmitter::VisitCastExpr(clang::CastExpr*) CGExprScalar.cpp:0:0
#22 0x000055ec35f877b4 clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value*>::Visit(clang::Stmt*) CGExprScalar.cpp:0:0
#23 0x000055ec35f8f444 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x43a1444)
#24 0x000055ec35ef21cf clang::CodeGen::CodeGenFunction::EmitScalarInit(clang::Expr const*, clang::ValueDecl const*, clang::CodeGen::LValue, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x43041cf)
#25 0x000055ec35ef35a8 clang::CodeGen::CodeGenFunction::EmitExprAsInit(clang::Expr const*, clang::ValueDecl const*, clang::CodeGen::LValue, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x43055a8)
#26 0x000055ec35efeea3 clang::CodeGen::CodeGenFunction::EmitAutoVarInit(clang::CodeGen::CodeGenFunction::AutoVarEmission const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4310ea3)
#27 0x000055ec35f005be clang::CodeGen::CodeGenFunction::EmitVarDecl(clang::VarDecl const&) (.part.0) CGDecl.cpp:0:0
#28 0x000055ec35f008b0 clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x43128b0)
#29 0x000055ec35b5bac7 clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3f6dac7)
#30 0x000055ec35b7014f clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3f8214f)
#31 0x000055ec35b69099 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3f7b099)
#32 0x000055ec35b6fa04 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3f81a04)
#33 0x000055ec35bcf99a clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fe199a)
#34 0x000055ec35be35cf clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3ff55cf)
#35 0x000055ec35c48539 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x405a539)
#36 0x000055ec35c434e5 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x40554e5)
#37 0x000055ec35c440b8 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x40560b8)
#38 0x000055ec35c4cf03 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.0) CodeGenModule.cpp:0:0
#39 0x000055ec36ab9fe6 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
#40 0x000055ec36aac090 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4ebe090)
#41 0x000055ec37fb24b4 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x63c44b4)
#42 0x000055ec36ab6ec8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4ec8ec8)
#43 0x000055ec36301799 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4713799)
#44 0x000055ec362870e6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x46990e6)
#45 0x000055ec363e5eb6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x47f7eb6)
#46 0x000055ec32ce402d cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10f602d)
#47 0x000055ec32cdfd2a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#48 0x000055ec360e77ed void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#49 0x000055ec357892a0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3b9b2a0)
#50 0x000055ec360e7e0f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#51 0x000055ec360aef7c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x44c0f7c)
#52 0x000055ec360afa0d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x44c1a0d)
#53 0x000055ec360b7aed clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x44c9aed)
#54 0x000055ec32ce228a clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10f428a)
#55 0x000055ec32be85a5 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xffa5a5)
#56 0x00007f33ff85e083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#57 0x000055ec32cdab0e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10ecb0e)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkW1tz27iS_jXwC0oqEOD1wQ-ybGczm1OTilOZRxUANiWcUAQLAB3n_PotkJQs0JJvUc6e2Z3ypERcGt_XaHQ3CJBbq9YNwCVKrlByfcE7t9Hm8ocC43RzIXT58_KvDTRY6m2rasACav0Dt0avDd_iH8ptMEqJrHmzdt9RSnBnVbPGunVKN75q9idBKUF0OWnnjFqvwVjMrQXTt664qjsDiC0QuUZk4fsNf_2jahzmiOb3WpWIFhhlV0MFxnajjcOILgRG7BqvVqJTtVPNilvbbWHFa8-yRDTvkeSIFojte1faYERzL1_1_QliV_3PpS-PUozoLbbqX6ArRHOBkqsIJddeSC8HK0Sv-r9iJxJj30qh5LoXePCwxAQjdotnEUZs0Q81ss2uj9Ie_v26URYL2PB7pQ2WvMEC8D0YVSkosW7wxrnWetXRW0Rv11LO17oUunZzbdaI3v4L0dt_ppA_3FTw34PMPzvXdg5L3XoZldFbPO13YioQW1rdGQmI3SC2SBBbRJ7ND24a1fhuuNHNzM8UrrpG9tNbarC40Q4bcJ1pMMf3vO4Ao-Rq9tdQNnM_W_Cq3asxwShb4r1ucP9fX5TcDEW9TfkREb01WjtEb-v6fjtrjf4nSP84tKC3tRKI3i7uviJ6e_PQmqVurOONm8u2RWyR54x6OULrGt94bNzBZ60aBwbRXPrWeDcaYgsvAtFFb9rZFW9083OrO-ux9vWfvnl6iKYnW_hBPjaVHtv4gXuLWuDFflGglNzMELtR9vOXUWDeW7_vk-K-bg3uq1dcX-MLNtyOwL9Aa8BC47iXNrRANOvXGpTzQYWfP90s7m6w7cRWOcyx6NbYQOvXlNNTy1Ju04m51NtR0U_1raztwPo1w5sSq0bWXQnYbQBLw-0GCy6_O8MleNKtgdZoCdZCiUejosu-J7dWS8UdlNh0DbbSqNaNkO8cl99x2W3bvY2SOSLF59EzcbPuttA4O1qGbntLGLyYmcFDW2vj53WwjtneC9mZM13zHdFboZpdNZ6tyx_cVLMYz9Z4pr1E3rZebr-G5hbP7vBstpZy5rSu5YarBrHrZwf2jYs5nRM8q6SutZmViq8bbZ2SFs-qRs96fYXFf3r3cbD6euqRp47Y0jsodoNbbiwYzB2GpsS6wpWqYWhJx5aHyzcalzD-9OnbP_DHL3gNDZjeYHznEmTNx0dEM45oNshiz8n6MMpo1ljqEnone1ISRpQRTB4IISRJQLIkj0nBKtwbWL9W7E87_PhsVOP66f862FD-2MjwHyttnQG-HdeUatywWvJfNgJEr8gDkwktWPXo6hFlUYicQcrlMeTLGnjTtX82d2rd8BrRvGv68FviWnv558VJUi4DnDTAmeV5WeR46U3sC0h9D-bnAOy_eFPWvc8btRe0WerGwcPOaZL-__0QbBwiqxirqlKQmBK8WhmwThtY9UE637vihzxdpfGsVk33MFs33VDRuo0BXs6tnpOeSxTHlARM4mCYPCsJEdhwZeEV8qWXnPaSY0aICCQnoeRE5kmBudCvQn4gmdI8KQLJ6VRytp_vV8vMaCgzC2WmZVWmb5PJWFWmgcz80EqKKBE5sGPhMAyEuA-Pu3BI832www3fgm37lVocC4zPtz0eIvGR8D2xxGJCIwXIXhpsZOeFj4S1GWq-Kavc1ZBULnldD7H_UAm70kAR-_U9LqTnYXtXQiaw84zRX4T9aryvwRdN8BVVER0mRXdu6_pRtbniFhBbPjrCLf8Oq364VevMKyb_KLGdFfThZscx5OZBvJEXfWL1Wfo3s3pPg4U04ghkvqcR4l98fj-g02p4Dch4AlLIrNiDXNiDNPc8mIK6Q9qvAZtMwJZMVE92AXs8EwYn230B29XuKfLF3dcxvu7wBwYw7EHOliRkSVIx8ZjMeL5pkCRAlsQ0P0S41CV8gCZ4uB23eCO_7d5VPnU7H2oteH0Nsn7qHwNNHPWnp3B86XePvdbvan3ejC-meRYP-6a9krJASVWcZZy9XUlvCCT_K8RZUmScBcTzkHhB4qR8yXfcSV7zwYlvlfN-9F2xafnBFw3Cji_VIgSXZ7SSz8cm68qhipflqt15-Re94VNGdHmQ8I-rf_FSiHotMUomxApSiV_R-hHP9Foo0QSKyH4NypJbd8wAdqWvhEWnU5-J-P_E1LMJsSqO47d7mkfUL-Qwu0BzRifCoziOD50IjcMQU9FIVu_l9LE5Zs6nfGc_PT74vMq57jK236IWEkcyiLw0maiFJfwdkdfTX9i_r1qShAexlk4SkgrgPbF20Tn97Zi5vNx97HqzVdYq3RwkZmdlHhEIgy2dZBmEJALezvwbN0O6lQczbg7ne8dl3nLj5mRwTb7BcaeUT4Hlgrwd2FNUxyCdTb00FyRQb5guiERwmb2PxeDRp0wOd6HnZcOqtOQyO2QzeX0qMhLF73GqatvW8JTPZEd9GPIWxvCfX6BCbHm4kXHuwN2wmzPzz2kUB95z8hJWpAUpinfw_49nnglSFAFzOmFecfKOFGGpt63umtLz_Uu5je7cndQtTL3lY6sjO9TTQWOxXv-eXQqr8oiTIMFgYdIkZFUU_O0a2ZVc6fLnC--XzsgGoqLgAZswXRLAkremS-NZDPjK57bjj6a97_98KrD8sGv4san073J2VZKEqRILUyUZ5wl7cbH_Q5ddDY_TO1Df4b-GSjVqPCN9hYKG8n26f9ZYRRKesHCNpxPCLIbkfYT_s4gmMSQB0WxCNCbixST4ONHT9M5LISUiSFjDA5RExrIiLyasUwpfdfsJ7qE-niM9TsRhwnYo6WjeFp6JpFwUFaQvbXhHsd5_aPNx29ZD8XBG-DzMD0Z3rY-PtMADrKtO1SUc3-rGJETHJSmCrPKKy-_QlEvd2G67e4nwVhznm3kQQIogo4yDHCSrBI3DtxCfubHQ3z8Jogls-SSKnn1jlTIZxyKIkjGdWEMK8thSWxyGxQeQnYOxaHcR5WwalTnIYC3FQSRPGYmyMKu7Nbpx0JRHQJ4dXhaxLEy94iA0pzTPCKR4ki75AT_2JwwSjmvxNJ9z74LSoiCQBhSSUMOQgEjD840e7COTey35U-BPmJ47VmRVBiKEHgRFKiEmtMRSRqst973z45n6hk_S8yUOy-gSD1cMz8sgIlVKaBkwyEIGZVVSjncaX0ZfezdwwONuy-v6G8i9Kz5CJw3jt5fx9EipwKVR96c8cRDBUgJZBmWvkwO5u2t9K9Orta8dr5ft3n1KXteCy--rqgm3SMPYo-Eso6XebnlTTlfv0enbv7YdbpjyOjhhvnNGNeu-5c04t_sOq5V8eIii4UFwq-TK9s1HLQaNfcHKGa6c3VVPxPG69gtBm4N63-TgNepif2Q3dEE0q_lWlP29p72qaL67_POHFsfno5hc3CkoJwdTcex6zlDzpWvueAX1z0Cdz0_dWXN3UQjKgyCZkKlxAQm2M__vjGOSx52ygiQKFcehyuRJxfWzxp8ExZ02A9896egbBHv71zVd_N6z6jiWpMpkYEp0opGKk_KtGvlDC3taHX9o8UnZ8FXHc-54bwEtV37yn55rP6vB0Ux-sx4jToIwlIRZFhEZh5N6vD74HeQGR5KCU_r_N-rxnClILAsOoebiSQpCaT6-adolITvkvRNZPHmHeCo8nzPtiGkevFFKgpyPCsgTnmCP93zDVhVPeLC1T6YXIIHkDK9WtRLe2XLjVgcQXnslMiZ5cGiSTFMqLgjgQf45lQpSENgPvLNLDMb0d-8GG8DVmM5jOVrocO1--G4GHpQb7kZHLPbYOgt4do-dxhYAq4NMexxml2SPX1CAXyO-8-QbjYvykpUFK_gFXEZpnmUZyQt2sbmkTCaigjgjJIlTHrFYlDmr4kKUUlIOF-qSEspISlNSRHHC5pyKSGaU0TSqKIMcxQS2XNVzb8FzbdYX_WX_y5QlUXZRcwG17b8lorSBH7ivRJSi5PrCXPafCYhubVFMamWdfZTilKvhMvhC6N_4GcRFZ-rL93_m0JP_nwAAAP__VJVgXA">