@ -610,6 +610,10 @@ ir::Value* IRGenImpl::GetLValAddress(SysYParser::LValContext* ctx) {
}
if (!indices.empty()) {
if (base_ptr->GetType() && base_ptr->GetType()->IsPointer() &&
base_ptr->GetType()->GetElementType()->IsPointer()) {
base_ptr = builder_.CreateLoad(base_ptr, module_.GetContext().NextTemp());
return builder_.CreateGep(base_ptr, std::move(indices),
module_.GetContext().NextTemp());