Regression in 3.3.1 / Fatal: Internal error 2015052501

FPC 3.3.1 6d49f7db fails to compile the below Fatal: Internal error 2015052501

FPC 2.3.2 works.

program Project1;
type
  TDBGPtr = QWord;
  TFpBreakPointMapEntry = record a: integer; end;
  PFpBreakPointMapEntry = ^TFpBreakPointMapEntry;

  TFpBreakPointMapLocDataPair = record
    Location: TDBGPtr;
    Data: PFpBreakPointMapEntry;
  end;

  { TGenericBreakLocationMap }

  generic TGenericBreakLocationMap<_BRK_STORE, _BREAK> = class(TObject)
  strict protected type
    { TInternalBreakLocationEntry }
    TInternalBreakLocationEntry = packed record
      BaseMapEntry: TFpBreakPointMapEntry;
      OrigValue: _BRK_STORE;
      ErrorSetting: ByteBool;
    end;
    PInternalBreakLocationEntry = ^TInternalBreakLocationEntry;

  private
    class function OrigByteFromPointer(AData: Pointer): _BRK_STORE;
    class function ErrorSettingFromPointer(AData: Pointer): ByteBool;
  public
    procedure MaskBreakpointsInReadData(const AAdress: TDbgPtr; const ASize: Cardinal; var AData); //override;
  end;

{ TGenericBreakLocationMap }

class function TGenericBreakLocationMap.OrigByteFromPointer(AData: Pointer
  ): _BRK_STORE;
begin
  Result := PInternalBreakLocationEntry(AData)^.ErrorSetting;
end;

class function TGenericBreakLocationMap.ErrorSettingFromPointer(AData: Pointer
  ): ByteBool;
begin

end;

procedure TGenericBreakLocationMap.MaskBreakpointsInReadData(
  const AAdress: TDbgPtr; const ASize: Cardinal; var AData);
var
  Brk: TFpBreakPointMapLocDataPair;
begin
  //for Brk in Self do begin
    if not ErrorSettingFromPointer(Brk.Data) and (Brk.Location >= AAdress) and (Brk.Location < (AAdress+ASize)) then
      PByte(@AData)[Brk.Location-AAdress] := OrigByteFromPointer(Brk.Data);
  //end;
end;


begin
end.