REGVAR + OBJECTCHECKS + INLINE - generation of incorrect code
#### FPC [main] x64 #### OS: Linux Debian 13 - bug 🐞 #### OS: Windows (Target x32) - bug 🐞 & FPC3.2.2 #### OS: Windows (Target x64) - OK ✅ & FPC3.2.2 --- Based on: https://gitlab.com/freepascal.org/fpc/source/-/issues/41553 Compile: `C:\fpclaztrunk\fpc\bin\x86_64-win64\fpc.exe -n -FuC:\fpclaztrunk\fpc\units\i386-win32\rtl -Twin32 -Pi386 app.lpr` Run: `app.exe` ```pascal program app; {$mode objfpc} {$OPTIMIZATION OFF} {$OPTIMIZATION REGVAR} {$OBJECTCHECKS ON} {$modeswitch advancedrecords} type TLazEditDisplayTokenBound = record Physical, Logical, Offset: Integer; procedure Init; inline; end; TLazCustomEditTextAttribute = class FStartX: TLazEditDisplayTokenBound; procedure SetStartX(AValue: TLazEditDisplayTokenBound); virtual; procedure SetFrameBoundsLog; inline; end; TSynEditMarkupHighlightMatches = class function HasDisplayAbleMatches: Boolean; virtual; function GetMarkupAttributeAtRowCol2: TLazCustomEditTextAttribute; end; procedure TLazEditDisplayTokenBound.Init; begin end; procedure TLazCustomEditTextAttribute.SetStartX(AValue: TLazEditDisplayTokenBound); begin end; procedure TLazCustomEditTextAttribute.SetFrameBoundsLog; var b: TLazEditDisplayTokenBound; begin b.Init; SetStartX(b); end; function TSynEditMarkupHighlightMatches.HasDisplayAbleMatches: Boolean; begin Result := False; end; function TSynEditMarkupHighlightMatches.GetMarkupAttributeAtRowCol2: TLazCustomEditTextAttribute; begin result := nil; if not HasDisplayAbleMatches then exit; Result.SetFrameBoundsLog; end; var O: TSynEditMarkupHighlightMatches; R: TObject; begin O := TSynEditMarkupHighlightMatches.Create; R := O.GetMarkupAttributeAtRowCol2; WriteLn('Must be 0, but = ', PtrUInt(R)); end. ``` Expectation: `0` \ Reality: `"random"`
issue