mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 20:59:42 +02:00
* Fixed building with OPT="-dTEST_WIN64_SEH -O2" after r21454. It is not yet possible to omit rbp-based stack frames if using SEH on Win64.
git-svn-id: trunk@21556 -
This commit is contained in:
parent
7d2be3635f
commit
e0deb4cc99
@ -882,6 +882,13 @@ implementation
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
const
|
||||
exception_flags: array[boolean] of tprocinfoflags = (
|
||||
[],
|
||||
[pi_uses_exceptions,pi_needs_implicit_finally,pi_has_implicit_finally]
|
||||
);
|
||||
|
||||
procedure tcgprocinfo.setup_tempgen;
|
||||
begin
|
||||
tg:=tgobjclass.create;
|
||||
@ -906,6 +913,9 @@ implementation
|
||||
* incoming parameters on the stack
|
||||
* open arrays
|
||||
- no local variables
|
||||
|
||||
- stack frame cannot be optimized if using Win64 SEH
|
||||
(at least with the current state of our codegenerator).
|
||||
}
|
||||
if ((po_assembler in procdef.procoptions) and
|
||||
(m_delphi in current_settings.modeswitches) and
|
||||
@ -915,12 +925,13 @@ implementation
|
||||
((cs_opt_stackframe in current_settings.optimizerswitches) and
|
||||
not(cs_generate_stackframes in current_settings.localswitches) and
|
||||
not(po_assembler in procdef.procoptions) and
|
||||
((flags*[pi_has_assembler_block,pi_is_assembler,
|
||||
{$ifdef i386}
|
||||
pi_uses_exceptions,pi_needs_implicit_finally,pi_has_implicit_finally,
|
||||
{$endif i386}
|
||||
pi_has_stackparameter,
|
||||
pi_needs_stackframe])=[])
|
||||
((flags*([pi_has_assembler_block,pi_is_assembler,
|
||||
pi_has_stackparameter,pi_needs_stackframe]+
|
||||
exception_flags[(target_info.cpu=cpu_i386)
|
||||
{$ifdef TEST_WIN64_SEH}
|
||||
or (target_info.system=system_x86_64_win64)
|
||||
{$endif TEST_WIN64_SEH}
|
||||
]))=[])
|
||||
)
|
||||
then
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user