mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 23:19:24 +02:00
+ Added the pio_inline_not_possible flag to timplprocoption. It is set if a function can't be inline (contains an assembler block, etc). When calling such functions, no note "Call to subroutine "?" marked as inline is not inlined" is emitted.
git-svn-id: trunk@40254 -
This commit is contained in:
parent
6bb752c637
commit
dd60397165
@ -4373,8 +4373,12 @@ implementation
|
||||
result:=pass1_inline
|
||||
else
|
||||
begin
|
||||
if (po_inline in procdefinition.procoptions) and not(po_compilerproc in procdefinition.procoptions) then
|
||||
Message1(cg_n_no_inline,tprocdef(procdefinition).customprocname([pno_proctypeoption, pno_paranames,pno_ownername, pno_noclassmarker]));
|
||||
if (po_inline in procdefinition.procoptions) and not(po_compilerproc in procdefinition.procoptions) and
|
||||
(procdefinition.typ=procdef) and
|
||||
not (pio_inline_not_possible in tprocdef(procdefinition).implprocoptions) then
|
||||
begin
|
||||
Message1(cg_n_no_inline,tprocdef(procdefinition).customprocname([pno_proctypeoption, pno_paranames,pno_ownername, pno_noclassmarker]));
|
||||
end;
|
||||
mark_unregable_parameters;
|
||||
result:=pass1_normal;
|
||||
end;
|
||||
|
@ -141,6 +141,7 @@ implementation
|
||||
|
||||
procedure _no_inline(const reason: TMsgStr);
|
||||
begin
|
||||
include(procdef.implprocoptions,pio_inline_not_possible);
|
||||
Message1(parser_h_not_supported_for_inline,reason);
|
||||
Message(parser_h_inlining_disabled);
|
||||
end;
|
||||
|
@ -423,7 +423,9 @@ type
|
||||
{ the routine contains no code }
|
||||
pio_empty,
|
||||
{ the inline body of this routine is available }
|
||||
pio_has_inlininginfo
|
||||
pio_has_inlininginfo,
|
||||
{ inline is not possible (has assembler block, etc) }
|
||||
pio_inline_not_possible
|
||||
);
|
||||
timplprocoptions = set of timplprocoption;
|
||||
|
||||
|
@ -2228,7 +2228,8 @@ type
|
||||
const
|
||||
piopt : array[low(timplprocoption)..high(timplprocoption)] of tpiopt=(
|
||||
(mask:pio_empty; str:'IsEmpty'),
|
||||
(mask:pio_has_inlininginfo; str:'HasInliningInfo')
|
||||
(mask:pio_has_inlininginfo; str:'HasInliningInfo'),
|
||||
(mask:pio_inline_not_possible; str:'InlineNotPossible')
|
||||
);
|
||||
var
|
||||
i: timplprocoption;
|
||||
|
Loading…
Reference in New Issue
Block a user