[PATCH] D20428: Tracking exception specification source locations

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 24 07:30:59 PDT 2016


On Fri, Jun 24, 2016 at 8:39 AM, Richard Smith <richard at metafoo.co.uk> wrote:
> rsmith added a comment.
>
> Ah right, we were (intentionally, but unfortunately) making an assumption that the `TypeLoc` data layout doesn't change when the exception spec of a function is updated. You'd need to make yourself a `TypeLocBuilder`, copy the relevant data, and update the exception spec loc.

Would that look something like what we do in SemaType.cpp
GetFullTypeForDeclarator()? i.e.,

if (TInfo) {
  TypeLocBuilder TLB;
  TLB.pushFullCopy(TInfo->getTypeLoc());
  ObjCObjectPointerTypeLoc TLoc = TLB.push<ObjCObjectPointerTypeLoc>(T);
  TLoc.setStarLoc(FixitLoc);
  TInfo = TLB.getTypeSourceInfo(Context, T);
}

~Aaron

>
> Where are we adjusting the exception specification on the type source info? That (changing the type-info-as-written) seems like a somewhat unusual thing to do implicitly.
>
>
> http://reviews.llvm.org/D20428
>
>
>


More information about the cfe-commits mailing list