diff --git a/rtl/inc/dynarr.inc b/rtl/inc/dynarr.inc index 2c309330a5..1d73594d0b 100644 --- a/rtl/inc/dynarr.inc +++ b/rtl/inc/dynarr.inc @@ -28,10 +28,10 @@ type function aligntoptr(p : pointer) : pointer;inline; begin {$ifdef FPC_REQUIRES_PROPER_ALIGNMENT} - if (ptrint(p) mod sizeof(ptrint))<>0 then - inc(ptrint(p),sizeof(ptrint)-ptrint(p) mod sizeof(ptrint)); -{$endif FPC_REQUIRES_PROPER_ALIGNMENT} + result:=align(p,sizeof(p)); +{$else FPC_REQUIRES_PROPER_ALIGNMENT} result:=p; +{$endif FPC_REQUIRES_PROPER_ALIGNMENT} end; diff --git a/rtl/objpas/typinfo.pp b/rtl/objpas/typinfo.pp index 0588dd75ff..7ec753ee72 100644 --- a/rtl/objpas/typinfo.pp +++ b/rtl/objpas/typinfo.pp @@ -21,6 +21,7 @@ unit typinfo; interface {$MODE objfpc} +{$inline on} {$h+} uses SysUtils; @@ -310,13 +311,13 @@ type Auxiliary methods ---------------------------------------------------------------------} -function aligntoptr(p : pointer) : pointer; +function aligntoptr(p : pointer) : pointer;inline; begin {$ifdef FPC_REQUIRES_PROPER_ALIGNMENT} - if (ptruint(p) and (sizeof(ptruint)-1))<>0 then - ptruint(p) := (ptruint(p) + sizeof(ptruint) - 1) and not (sizeof(ptruint) - 1); + result:=align(p,sizeof(p)); +{$else FPC_REQUIRES_PROPER_ALIGNMENT} + result:=p; {$endif FPC_REQUIRES_PROPER_ALIGNMENT} - aligntoptr:=p; end;