643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
|
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
|
-
-
+
+
+
-
+
+
|
auto symBaseLoc = b.pop();
if( !symBaseLoc )
return false;
const auto& tc = TypeCache::GetInstance();
auto ltExpr = tc.memLocLifetimeGetter()( symBaseLoc->expr );
auto pathExpr = tc.memLocPathGetter()( symBaseLoc->expr );
auto ltExpr = tc.addrLifetimeGetter()( symBaseLoc->expr );
auto originExpr = tc.addrOriginGetter()( symBaseLoc->expr );
auto pathExpr = tc.addrPathGetter()( symBaseLoc->expr );
b.push( Z3Val
{
tc.memLocCtor()(
tc.addrCtor()(
ltExpr,
originExpr,
z3::concat( pathExpr, GetZ3Context().int_val( instr.memberIndex() ).unit() )
),
*EIRToValue( GetValueType< cir::Address >() ),
instr.locationId()
} );
|