@@ -1527,15 +1527,10 @@ bool InitGlobal(InterpState &S, CodePtr OpPC, uint32_t I) {
15271527template <PrimType Name, class T = typename PrimConv<Name>::T>
15281528bool InitGlobalTemp (InterpState &S, CodePtr OpPC, uint32_t I,
15291529 const LifetimeExtendedTemporaryDecl *Temp) {
1530- const Pointer &Ptr = S.P .getGlobal (I);
1531-
1532- const T Value = S.Stk .peek <T>();
1533- APValue APV = Value.toAPValue (S.getASTContext ());
1534- APValue *Cached = Temp->getOrCreateValue (true );
1535- *Cached = APV;
1530+ assert (Temp);
15361531
1532+ const Pointer &Ptr = S.P .getGlobal (I);
15371533 assert (Ptr.getDeclDesc ()->asExpr ());
1538-
15391534 S.SeenGlobalTemporaries .push_back (
15401535 std::make_pair (Ptr.getDeclDesc ()->asExpr (), Temp));
15411536
@@ -1550,19 +1545,11 @@ bool InitGlobalTemp(InterpState &S, CodePtr OpPC, uint32_t I,
15501545inline bool InitGlobalTempComp (InterpState &S, CodePtr OpPC,
15511546 const LifetimeExtendedTemporaryDecl *Temp) {
15521547 assert (Temp);
1553- const Pointer &P = S.Stk .peek <Pointer>();
1554- APValue *Cached = Temp->getOrCreateValue (true );
15551548
1549+ const Pointer &Ptr = S.Stk .peek <Pointer>();
15561550 S.SeenGlobalTemporaries .push_back (
1557- std::make_pair (P.getDeclDesc ()->asExpr (), Temp));
1558-
1559- if (std::optional<APValue> APV =
1560- P.toRValue (S.getASTContext (), Temp->getTemporaryExpr ()->getType ())) {
1561- *Cached = *APV;
1562- return true ;
1563- }
1564-
1565- return false ;
1551+ std::make_pair (Ptr.getDeclDesc ()->asExpr (), Temp));
1552+ return true ;
15661553}
15671554
15681555template <PrimType Name, class T = typename PrimConv<Name>::T>
0 commit comments