alexfh wrote:

Before this change the cast was added here:
```
* thread #1, name = 'clang', stop reason = step over
    frame #0: 0x00005555667e8ff2 
clang`clang::Sema::BuildCXXNew(this=0x00005092ffd24000, Range=SourceRange @ 
0x00007ffffffef4f8, UseGlobal=false, PlacementLParen=(ID = 94), 
PlacementArgs=clang::MultiExprArg @ 0x00007ffffffef4e0, PlacementRParen=(ID = 
94), TypeIdParens=SourceRange @ 0x00007ffffffef548, AllocType=QualType @ 
0x00007ffffffef4d0, AllocTypeInfo=0x00005092ffd23a28, ArraySize= Has 
Value=false , DirectInitRange=SourceRange @ 0x00007ffffffef570, 
Initializer=0x00005092ffd66230) at SemaExprCXX.cpp:2591:18
   2588       = InitializedEntity::InitializeNew(StartLoc, InitType);
   2589     InitializationSequence InitSeq(*this, Entity, Kind, Exprs);
   2590     ExprResult FullInit = InitSeq.Perform(*this, Entity, Kind, Exprs);
-> 2591     if (FullInit.isInvalid())
   2592       return ExprError();
   2593
   2594     // FullInit is our initializer; strip off CXXBindTemporaryExprs, 
because
(lldb) p Exprs[0]->dump()
IntegerLiteral 0x5092ffd239e8 'int' 0
(lldb) p FullInit.get()->dump()
CXXParenListInitExpr 0x5092ffd66268 'Node':'struct Node'
`-ImplicitCastExpr 0x5092ffd66250 'long' <IntegralCast>
  `-IntegerLiteral 0x5092ffd239e8 'int' 0
```
Now this doesn't happen:
```
* thread #1, name = 'clang', stop reason = step over
    frame #0: 0x0000555566a23c92 
clang`clang::Sema::BuildCXXNew(this=0x00005092ffd26000, Range=SourceRange @ 
0x00007ffffffef458, UseGlobal=false, PlacementLParen=(ID = 94), 
PlacementArgs=clang::MultiExprArg @ 0x00007ffffffef440, PlacementRParen=(ID = 
94), TypeIdParens=SourceRange @ 0x00007ffffffef4a8, AllocType=QualType @ 
0x00007ffffffef430, AllocTypeInfo=0x00005092ffd25a28, ArraySize= Has 
Value=false , DirectInitRange=SourceRange @ 0x00007ffffffef4d0, 
Initializer=0x00005092ffd6b230) at SemaExprCXX.cpp:2584:18
   2581       = InitializedEntity::InitializeNew(StartLoc, InitType);
   2582     InitializationSequence InitSeq(*this, Entity, Kind, Exprs);
   2583     ExprResult FullInit = InitSeq.Perform(*this, Entity, Kind, Exprs);
-> 2584     if (FullInit.isInvalid())
   2585       return ExprError();
   2586
   2587     // FullInit is our initializer; strip off CXXBindTemporaryExprs, 
because
(lldb) p Exprs.size()
(size_t) 1
(lldb) p Exprs[0]->dump()
CXXParenListInitExpr 0x5092ffd6b230 'Node':'struct Node'
`-IntegerLiteral 0x5092ffd259e8 'int' 0
(lldb) p FullInit.get()->dump()
CXXParenListInitExpr 0x5092ffd6b230 'Node':'struct Node'
`-IntegerLiteral 0x5092ffd259e8 'int' 0
```
(probably because the argument of a `new` is a `CXXParenListInitExpr` rather 
than an `IntegerLiteral`).

In both cases this is happening here:
```
(lldb) bt
* thread #1, name = 'clang', stop reason = step over
  * frame #0: 0x00005555667e8ff2 
clang`clang::Sema::BuildCXXNew(this=0x00005092ffd24000, Range=SourceRange @ 
0x00007ffffffef4f8, UseGlobal=false, PlacementLParen=(ID = 94), 
PlacementArgs=clang::MultiExprArg @ 0x00007ffffffef4e0, PlacementRParen=(ID = 
94), TypeIdParens=SourceRange @ 0x00007ffffffef548, AllocType=QualType @ 
0x00007ffffffef4d0, AllocTypeInfo=0x00005092ffd23a28, ArraySize= Has 
Value=false , DirectInitRange=SourceRange @ 0x00007ffffffef570, 
Initializer=0x00005092ffd66230) at SemaExprCXX.cpp:2591:18
frame #1: 0x000055556756d373 clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::RebuildCXXNewExpr(this=0x00007fffffff1640, 
StartLoc=(ID = 94), UseGlobal=false, PlacementLParen=(ID = 94), 
PlacementArgs=clang::MultiExprArg @ 0x00007ffffffef610, PlacementRParen=(ID = 
94), TypeIdParens=SourceRange @ 0x00007ffffffef668, AllocatedType=QualType @ 
0x00007ffffffef600, AllocatedTypeInfo=0x00005092ffd23a28, ArraySize= Has 
Value=false , DirectInitRange=SourceRange @ 0x00007ffffffef690, 
Initializer=0x00005092ffd66230) at TreeTransform.h:3442:22
    frame #2: 0x000055556754f773 clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCXXNewExpr(this=0x00007fffffff1640, 
E=0x00005092ffd64cf8) at TreeTransform.h:14541:23
    frame #3: 0x0000555567530256 clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformExpr(this=0x00007fffffff1640, 
E=0x00005092ffd64cf8) at StmtNodes.inc:718:1
    frame #4: 0x0000555567530f17 clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformInitializer(this=0x00007fffffff1640,
 Init=0x00005092ffd64cf8, NotCopyInit=false) at TreeTransform.h:4375:25
    frame #5: 0x000055556753212c clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformExprs(this=0x00007fffffff1640, 
Inputs=0x00005092ffd64df8, NumInputs=1, IsCall=true, 
Outputs=0x00007fffffff0628, ArgChanged=0x00007fffffff067f) at 
TreeTransform.h:4531:29
    frame #6: 0x000055556754ae51 clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCallExpr(this=0x00007fffffff1640, 
E=0x00005092ffd64dd8) at TreeTransform.h:13380:20
    frame #7: 0x000055556752fe5a clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformExpr(this=0x00007fffffff1640, 
E=0x00005092ffd64dd8) at StmtNodes.inc:614:1
    frame #8: 0x000055556752d68f clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformStmt(this=0x00007fffffff1640, 
S=0x00005092ffd64dd8, SDK=Discarded) at TreeTransform.h:4294:35
    frame #9: 0x00005555675572bd clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCompoundStmt(this=0x00007fffffff1640,
 S=0x00005092ffd64e00, IsStmtExpr=false) at TreeTransform.h:8088:38
    frame #10: 0x00005555675a5a9a clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformCompoundStmt(this=0x00007fffffff1640,
 S=0x00005092ffd64e00) at TreeTransform.h:8070:23
    frame #11: 0x000055556752d4af clang`clang::TreeTransform<(anonymous 
namespace)::TemplateInstantiator>::TransformStmt(this=0x00007fffffff1640, 
S=0x00005092ffd64e00, SDK=Discarded) at StmtNodes.inc:1652:1
    frame #12: 0x000055556752b78e 
clang`clang::Sema::SubstStmt(this=0x00005092ffd24000, S=0x00005092ffd64e00, 
TemplateArgs=0x00007fffffff1b68) at SemaTemplateInstantiate.cpp:4357:23
    frame #13: 0x0000555567633a63 
clang`clang::Sema::InstantiateFunctionDefinition(this=0x00005092ffd24000, 
PointOfInstantiation=(ID = 138), Function=0x00005092ffd66088, Recursive=true, 
DefinitionRequired=false, AtEndOfTU=true) at 
SemaTemplateInstantiateDecl.cpp:5819:14
    frame #14: 0x0000555567637ae3 
clang`clang::Sema::PerformPendingInstantiations(this=0x00005092ffd24000, 
LocalOnly=false, AtEndOfTU=true) at SemaTemplateInstantiateDecl.cpp:7061:9
    frame #15: 0x0000555565e12515 
clang`clang::Sema::ActOnEndOfTranslationUnitFragment(this=0x00005092ffd24000, 
Kind=Normal) at Sema.cpp:1197:5
    frame #16: 0x0000555565e12c1b 
clang`clang::Sema::ActOnEndOfTranslationUnit(this=0x00005092ffd24000) at 
Sema.cpp:1230:5
    frame #17: 0x00005555656a82d2 
clang`clang::Parser::ParseTopLevelDecl(this=0x00005092ffc06000, 
Result=0x00007fffffff4288, ImportState=0x00007fffffff4284) at Parser.cpp:749:13
    frame #18: 0x00005555656a0bc6 clang`clang::ParseAST(S=0x00005092ffd24000, 
PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:171:20
    frame #19: 0x0000555565043c85 
clang`clang::ASTFrontendAction::ExecuteAction(this=0x00005092ffe0daa0) at 
FrontendAction.cpp:1343:3
    frame #20: 0x000055556504323b 
clang`clang::FrontendAction::Execute(this=0x00005092ffe0daa0) at 
FrontendAction.cpp:1225:3
    frame #21: 0x0000555564ef050d 
clang`clang::CompilerInstance::ExecuteAction(this=0x00005092ffe0e6e0, 
Act=0x00005092ffe0daa0) at CompilerInstance.cpp:1056:33
    frame #22: 0x0000555562960225 
clang`clang::ExecuteCompilerInvocation(Clang=0x00005092ffe0e6e0) at 
ExecuteCompilerInvocation.cpp:300:25
    frame #23: 0x000055556292d9d8 clang`cc1_main(Argv=ArrayRef @ 
0x00007fffffff8028, Argv0="clang", MainAddr=0x0000555562919430) at 
cc1_main.cpp:297:15
```



https://github.com/llvm/llvm-project/pull/138518
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to