diff --git a/src/zipr.cpp b/src/zipr.cpp index 75cdd8e5145b26c7265fa06bc8ac3ce17c4cae5c..4ad14c2aebaaf30ab187301f3f4d769d4b1dc344 100644 --- a/src/zipr.cpp +++ b/src/zipr.cpp @@ -913,11 +913,12 @@ void ZiprImpl_t::PlaceDollops() * TODO: Consider that allowed_coalescing may invalidate the * possibility of the validity of the placement in (2). */ - const auto ibta=to_place->FallthroughDollop()-> front()-> Instruction()-> GetIndirectBranchTargetAddress() ; - initial_placement_abuts_pin = to_place->FallthroughDollop() && - ibta && - ibta -> GetVirtualOffset()!=0 && - ibta-> GetVirtualOffset() == (placement.GetStart() + to_place->GetSize() - sizer->TRAMPOLINE_SIZE); + const auto has_fallthrough = to_place->FallthroughDollop() != nullptr; + const auto ibta=has_fallthrough ? to_place->FallthroughDollop()-> front()-> Instruction()-> GetIndirectBranchTargetAddress() : 0; + initial_placement_abuts_pin = has_fallthrough && + ibta && + ibta -> GetVirtualOffset()!=0 && + ibta-> GetVirtualOffset() == (placement.GetStart() + to_place->GetSize() - sizer->TRAMPOLINE_SIZE); /* * If this dollop has a fallthrough, find out where that * fallthrough is (or is going to be) placed. That way