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

    <tr>
        <th>Summary</th>
        <td>
            [clang] When the PointerWidth and the SizeType width are not same, a crash occurs in the new operation.
        </td>
    </tr>

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

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

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

<pre>
    I don't know how to building a backend where PointerWidth and SizeTy width are not the same. If you want to reproduce it, you can use the following patch for temporary testing.
```
diff --git a/clang/lib/Basic/Targets/ARC.h b/clang/lib/Basic/Targets/ARC.h
index fcbfdd6eec58..2547f454416d 100644
--- a/clang/lib/Basic/Targets/ARC.h
+++ b/clang/lib/Basic/Targets/ARC.h
@@ -31,9 +31,10 @@ public:
     DoubleAlign = LongDoubleAlign = 32;
 SizeType = UnsignedInt;
     PtrDiffType = SignedInt;
-    IntPtrType = SignedInt;
+    IntPtrType = SignedLong;
+    PointerAlign = PointerWidth = 64;
     UseZeroLengthBitfieldAlignment = true;
- resetDataLayout("e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-"
+ resetDataLayout("e-m:e-p:64:64:64:32-i1:8:32-i8:8:32-i16:16:32-"
 "i32:32:32-f32:32:32-i64:32-f64:32-a:0:32-n32");
 }
```

```cpp
// test_new.cpp
int *TestNew() { return new int; }
```

```bash
clang test_new.cpp -target arc -Xclang -ast-dump -c
```

I will receive the following error:
```
clang: llvm-project/clang/lib/AST/Expr.cpp:978: clang::IntegerLiteral::IntegerLiteral(const ASTContext &, const llvm::APInt &, QualType, SourceLocation): Assertion `V.getBitWidth() == C.getIntWidth(type) && "Integer type is not the correct size for constant."' 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: ./bin/clang ../test_new.cpp -target arc -Xclang -ast-dump -c
1.      ../test_new.cpp:1:32: current parser token ';'
2. ../test_new.cpp:1:16: parsing function body 'TestNew'
3. ../test_new.cpp:1:16: in compound statement ('{}')
 #0 0x000055bfd0899228 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./bin/clang+0x3d1a228)
 #1 0x000055bfd0896f1e llvm::sys::RunSignalHandlers() (./bin/clang+0x3d17f1e)
 #2 0x000055bfd08985c1 llvm::sys::CleanupOnSignal(unsigned long) (./bin/clang+0x3d195c1)
 #3 0x000055bfd0813ac6 CrashRecoverySignalHandler(int) (./bin/clang+0x3c94ac6)
 #4 0x00007f68247de980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007f682300ce87 gsignal /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f682300e7f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f6822ffe3fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
 #8 0x00007f6822ffe472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x000055bfd3b78a84 (./bin/clang+0x6ff9a84)
#10 0x000055bfd32a258e clang::Sema::FindAllocationFunctions(clang::SourceLocation, clang::SourceRange, clang::Sema::AllocationFunctionScope, clang::Sema::AllocationFunctionScope, clang::QualType, bool, bool&, llvm::MutableArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::FunctionDecl*&, bool) (./bin/clang+0x672358e)
#11 0x000055bfd32a038f clang::Sema::BuildCXXNew(clang::SourceRange, bool, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceRange, clang::QualType, clang::TypeSourceInfo*, std::optional<clang::Expr*>, clang::SourceRange, clang::Expr*) (./bin/clang+0x672138f)
#12 0x000055bfd329fa68 clang::Sema::ActOnCXXNew(clang::SourceLocation, bool, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::SourceRange, clang::Declarator&, clang::Expr*) (./bin/clang+0x6720a68)
#13 0x000055bfd2ca2d9d clang::Parser::ParseCXXNewExpression(bool, clang::SourceLocation) (./bin/clang+0x6123d9d)
#14 0x000055bfd2c8abfa clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (./bin/clang+0x610bbfa)
#15 0x000055bfd2c8416f clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (./bin/clang+0x610516f)
#16 0x000055bfd2c84079 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (./bin/clang+0x6105079)
#17 0x000055bfd2d1d163 clang::Parser::ParseReturnStatement() (./bin/clang+0x619e163)
#18 0x000055bfd2d1647f clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (./bin/clang+0x619747f)
#19 0x000055bfd2d1572f clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (./bin/clang+0x619672f)
#20 0x000055bfd2d1f7b1 clang::Parser::ParseCompoundStatementBody(bool) (./bin/clang+0x61a07b1)
#21 0x000055bfd2d2087f clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (./bin/clang+0x61a187f)
#22 0x000055bfd2c64ec6 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (./bin/clang+0x60e5ec6)
#23 0x000055bfd2cd35ff clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (./bin/clang+0x61545ff)
#24 0x000055bfd2c63b97 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (./bin/clang+0x60e4b97)
#25 0x000055bfd2c63471 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (./bin/clang+0x60e4471)
#26 0x000055bfd2c62426 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (./bin/clang+0x60e3426)
#27 0x000055bfd2c6045d clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (./bin/clang+0x60e145d)
#28 0x000055bfd2c5fbcf clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (./bin/clang+0x60e0bcf)
#29 0x000055bfd2c5ad46 clang::ParseAST(clang::Sema&, bool, bool) (./bin/clang+0x60dbd46)
#30 0x000055bfd13b9f9f clang::FrontendAction::Execute() (./bin/clang+0x483af9f)
#31 0x000055bfd132b46d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (./bin/clang+0x47ac46d)
#32 0x000055bfd1495dae clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (./bin/clang+0x4916dae)
#33 0x000055bfcf64fb3a cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (./bin/clang+0x2ad0b3a)
#34 0x000055bfcf64bc8e ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) (./bin/clang+0x2accc8e)
#35 0x000055bfd11a3009 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::$_0>(long) (./bin/clang+0x4624009)
#36 0x000055bfd0813806 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (./bin/clang+0x3c94806)
#37 0x000055bfd11a2842 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (./bin/clang+0x4623842)
#38 0x000055bfd11606f9 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (./bin/clang+0x45e16f9)
#39 0x000055bfd11609a7 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&, bool) const (./bin/clang+0x45e19a7)
#40 0x000055bfd117fe8a clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (./bin/clang+0x4600e8a)
#41 0x000055bfcf64b013 clang_main(int, char**, llvm::ToolContext const&) (./bin/clang+0x2acc013)
#42 0x000055bfcf65c011 main (./bin/clang+0x2add011)
#43 0x00007f6822fefc87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#44 0x000055bfcf647d2a _start (./bin/clang+0x2ac8d2a)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 17.0.0 (https://github.com/llvm/llvm-project.git 8ec44987e54b5366a03716237feb79e37ae0634a)
Target: arc
Thread model: posix
InstalledDir: llvm-project/build/./bin
clang: error: unable to execute command: Aborted (core dumped)
clang: note: diagnostic msg: Error generating preprocessed source(s).
```

The reason is that the type of getZero here does not match the type of getSize.
```cpp
// clang/lib/Sema/SemaExprCXX.cpp:2643
IntegerLiteral Size(
 Context,
    llvm::APInt::getZero(
 Context.getTargetInfo().getPointerWidth(LangAS::Default)),
 Context.getSizeType(), SourceLocation());
```

I tried to perform a fix here: https://reviews.llvm.org/D152160
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkOltv4zp6v0Z5IWxIpK4PeXCcSZtttpOOs7vT82JQ1CebHZl0SSqX8-sLUpJtKraSObNYHKBBkFC8ffcLyY9qzTcC4DpIboLk9oq2ZivV9ZLu1X9TsbkqZfV2fY8qKQKcGfRDyBe0lS_ISFS2vKm42CCKSsp-gKjQyxYUoEfJhQH1D16ZLaKiQiv-Ozy9oZeuQwES0iCzBaTpDubovkZvskUvVBi7r4K9klXLAHET4KUbY1SgVoNbVMumkS8W8J4atkW1VMjAbi8VVW_IgDZcbOZBeBuEiyAN-1_3WfG6RrPZhhtEA3zHGio2Ab5reBnguxuqOQvw3RNVGzA6wHeLb8v5FpWfndnB4KKCV1Szsq6qFIAl-XyOkzir4ySOo7RCURimcdxNns1mn8ekJwnfdL8_i1gQh0EcohmJArwsUIBvXCsKUT-yb8uGs4AsuvnI_tzKtmxg0fCNQAG5RQ9SbMZ9BAfkpl_TiXoPbuBvwilXdS_McYb9eTTqltf1YeLq3bSZnXYvzKNRE7MsFy7Ns5iOJ_aaeUTdU1XbkcY-pn_T8Bso-QBiY7Y33NQcmsqt34EwbolRLZzgrUCDuaWGPtA32ZoA5wHGMNsFZAGzfUAWll0Lgmc8Csgi79v5STtKA7JwfwieBRgfSfhwb4v-yZ-fh4ICjHmPYTdUe1982LceGjQgi7BrCoLtRrg48jDIbs9a4qiT7fcDlXcBvnNWvBbwMj8McMttvHgCbf4TXhzlBQoyyxPTKoEEvCDuVOOzMEuqe8twRuTBRDPjTAhRxdDsezdhRrWZVe1uj2ZsAsA9euFNgxQw4M9jlwVKSXUwsdH6zpjJAjXN8262V_J_gJl3Rr5YPQX47svrXjnukEWRWZmiYXVAFvfCwAbUAzegaHO2D-dMCm3QYvW0lMLAq2Vvav1t129R6BYuHu_FYfC_WtpYQ7PtlWwVgwfJqOE2PhQWi4XWoOw3CtLw7_MNmBtunH0NMiO31mqWduheHIaM27To4KRWDXuEkR1BXB-CBpNKATNI89_BOX-HMBVm7pQvQzXlDVR9BHh8-LJYfUG6LXfW66Oy3dgII5WLNVtj9tqS6dRuw822LedM7iyzLQO6fyei4Fq3YB2rC2xcsKatOhkzRfXWRUKjKHMM2rtQxkBrqJB23LLddiXVWjJODVRItQJppvje9CivDGU_kFW0g6KEc_So5EbRHaJq01rfY9FG8wDflVwMOoLmtuMPKHI0d97u_XrrIwbzR6xVynq9PVXaCkb-AIECnFlzx1m3E55f3MQ5G7fYWkLdCub0xKYYdpeDafc7kY924gIxudvLVlRIG2qgc8lWzbIgu7FuAGdWLQfPRkIUvoZhGCZJWVdhXhQY5yeart9013hUXBgnhqdOlvlxkqIva6mNArrrbcK6Hae5-UgcAb4JX0kVUexU_4hHNMIjrSM4h8e3VthgRpt_p6JqQOnBhi6CyuoIPFB4BCpPWHQO1LIBKtr91x5ggPO2j96osZF0EmqRsMiDSnyoEaEsRUtrId-AyWdQbx5dAc4_YCIrYspSD0bcw8jqNMdxVkGRh2i9VqCNVLBWvSr0XvM1T9dpPGu4aF9nG9F2A3uzVUCruZbz0AGKcJGHHpjkFAwJQwZ5hjbaoY8sqjYNts6j4SWbtb-15GV1-MRzq4F3uufpnVNo_aYr2Fsn0gr-2nU8O3xEaz8V5RrmNhFLIhdcD7ikI1wgqyNES-lo_Rwmpur44VY5IPkISHYKBNc1kJqi9Zo6x762znVdUg2fhditOzQ6kIUPMh-DjDP8CekxK7e0U5AwzrAnt-JUBUmZ5TSPL6lXWtcFzePDemuinq8gmOIkh9MYu4Id7Vp3XFSLpunj4F3v16ytnk4fBcslejf4jYoNjEcOUN5DWDG5_9X5p_G8lLI5_neu7ego_toaarN-pejbN6gDsjzZxSYjAV4E5Mto-wH0LbDGTugzjI8mdBhc9AZphkmSgyeuaCSukOT1ecbcWKVdfv_epZGXpTCwY1KIv8qgP6gWp2I76bZd3aJ7UUvHzyXSpupG5d7CsPngT6B2DvqwZFJCEclrT0LYl1BR0zS_oLrMfBWXJXTKrT-zkKxOU0WNVO_1_lMsDGmaeyz0wipmFFdFdbrro0vMTtodEy0w0Nrhnn-CY5dxijCpisrDKfZxymlZ02mcqDYeRhcm23nu-z-4qC74pwtLrR3Y5SubFb5fOsn2KCzLmnokJiMS4yitJ0lcuFs1m45-htARtlOoJVHqG1U6Ri3MiknU_tkIhVnhIZR5CFVRFaVkEqFv7vy-GvL36Qw3jQqIUuJBzEcQ0zibls4B1lc1mCiXYlEbUAtjFC9bY494Jzn_akeb5u_ArCl7LmNldqZ3swS3znNM6aVrV3ZRf-b-wBAX5_aqTpE8C208Y4qdWZz5GlWM2Jlk-I-w88_Cvyna0wx7tONwRHudldG0L-vPnwce3Mjq7eBkJ2DTMCsjD3bkw8Zh_oEaH9K6EexRBLqgRZ4Eu8RwWlNolPuagrHve9IYWPopjG-h5oKbsz6Ii81U3HyvDU-w2zfUuIynuwqaXvVADRyt5IFr84GehJDAydHTUj6KwxVJ6mlZWZL-Tcl2f5Hg1R7Ye8SPrDiv8B87hE-5lB7VO6lcHnMv-EdMiZI4qX11GCUCKSmL7EOmfFUnSnEvDKju8uHXnd67GZOMXjAGWtsxXnNQ0_oQl0XmkZ6MSY-zab9x4ig9Dlw0i386A8Z68HMMiDPfeY3SkBTHeNoVfHntRO1HjH8B0VNkkRj7dp6NyArjZDrffpL7B3iGpnO8p_R83dP_beHRjALgwTG408iZ8Hc8Ff1VVm0D97u9VENmNumxQ4jixMvVsZ8qsaQu2Qcxhitt_lxEhSXz_U4xIopW8Xvdc48m-RiF09uGj28dwqqsYk9B_AvliJRFXXgMvVPWbYtq4Qx8OPoBay2hU4lunBNaFx6h_q1xRHAZp5422mSEN6Du3XMIAw9cj4HHgxF2k5yPM8ri1FMn_245ioukouAfch3oI17PhzCUT-E9aadxEaUV9S5_vOtmVqdxXRKKGIvWO8r9TPT05L-lakgYDod-rw8v0bPk1TQ-mFZhSbwDI4lH-JQsBzRwYxk9OUU7nx_f7_bNWeRG93F2j-Hh7pj1TGDJGPOvzIgXtaKIkjAsHMEnYIZXmrVyPHOjneZapNwURpumpOzHuha-G6gUfz4c5pfRUu52VFRjIzgrm3N3VifsMoqLTedcUC-5w4r1mr2-RlH3UVLN2Vq7-T1Xvcm2Y20U5UYPw6PtaHeN2h1cuvEO5GJ0n9AJwa0JcLwO3aT8g7eTOMVxGHonaJKO307yMD2RiPeKMmSFbuRbK1a0hubN4-q0BKefXPLQd3fZSGNwHmP0_1viE5IleYw99uU--9IwrYuL7HNOkb4LGwNPPQ86WmgnXDoKTUwd375P05dAlNa-5hZj-gqa_Sx9f5GlvkzcX2RpT2wecVNu9CDUPeVWnu6V8fP8GCT_c2wpqHc6iP0kIcpqyOklFG5P2l74PBM3L7HzX8mWCc8WhpB7YTGOxmExjPq7wSFQD4g4q130JvdLQS-MvNvCGPs4JCyMImShT8T3Koy8405M_PdKqFmeofW64aV1PVSZdb_jp15ImW6Hp-Gu6QbdPu61lMTx8bnUgh-nF1mFKeoAT7Air_BRHIOoDwVJnRxQ3aeEiPVC74pp0As3WwSv3PK9AhQR95baakCzZ2Qk0gCIn-R3p2DQMyjNpUBRNg_noV34c3U38w03KAcWx0WeQRKXCUlTGpIsSjHJaiizAkhGIUxJfCSxK4K0pFHVl7k8udd-tJMVNK4WRWr-2ldt2eSzaaC65epMCdYgx4G3F5jYClo2YBkCnfEOfHSlUaVUBlz0ZVKBq_CB6r1IhDQ2d0cVpxshteEM7bQb-WLhoA0IsEdmsTlfYZTrABfnC2AHNgBSQLUUiGtktrQrrHKFVrJGGzC_gZLIFfNWErrSq50rth3NW_HfYQxpXMvXK2H_kt-du9y_L697tfz-va_rwWlMBlGcVqq5klKbsHQv-8d7sGOV5qhWrWv2VLxbOd-A6VSjeyO1mZDtOy0FDXD-QMVmsRrOszVtG2MlZX-X7zccyl77xOpMcVzerz5UpJ4vHTSKQ2X1Zw-qlmqHKKr5qxOFVQDfbhQ8c3jRc0v_XCrL5NsowVEaXlXXpCpIQa_gOkrzpMgIjpKr7XWRhDgtSZRnESkIKQqoIygTFtGK0rDCV_wah5iEaZhEJCEknNMoKpI0SQiJ47yOyiAOYUd5c4B65WrirlMSRelVQ0totKsmx9jVZNrBAOMgub1S186qynajgzhsuDZH3K8MN40rQ-_0JblF_9iCcAr3rqDcdh4qjf2yck13XZFdX5AnGWuVRrzbyWIk99BdOM2vWtVc__ESQEfx_wUAAP__BjoccA">