mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 06:49:13 +02:00
* reference FPC_ABSMASK_SINGLE/-DOUBLE using the indirect symbol if required for dynamic packages
git-svn-id: trunk@43536 -
This commit is contained in:
parent
f13200d68b
commit
f4d96906c2
@ -87,7 +87,7 @@ implementation
|
|||||||
uses
|
uses
|
||||||
systems,
|
systems,
|
||||||
globtype,globals,
|
globtype,globals,
|
||||||
verbose,compinnr,
|
verbose,compinnr,fmodule,
|
||||||
defutil,
|
defutil,
|
||||||
aasmbase,aasmdata,aasmcpu,
|
aasmbase,aasmdata,aasmcpu,
|
||||||
symconst,symtype,symdef,symcpu,
|
symconst,symtype,symdef,symcpu,
|
||||||
@ -557,8 +557,16 @@ implementation
|
|||||||
|
|
||||||
|
|
||||||
procedure tx86inlinenode.second_abs_real;
|
procedure tx86inlinenode.second_abs_real;
|
||||||
|
|
||||||
|
function needs_indirect:boolean; inline;
|
||||||
|
begin
|
||||||
|
result:=(tf_supports_packages in target_info.flags) and
|
||||||
|
(target_info.system in systems_indirect_var_imports);
|
||||||
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
href : treference;
|
href : treference;
|
||||||
|
sym : tasmsymbol;
|
||||||
begin
|
begin
|
||||||
if use_vectorfpu(resultdef) then
|
if use_vectorfpu(resultdef) then
|
||||||
begin
|
begin
|
||||||
@ -575,7 +583,9 @@ implementation
|
|||||||
case tfloatdef(resultdef).floattype of
|
case tfloatdef(resultdef).floattype of
|
||||||
s32real:
|
s32real:
|
||||||
begin
|
begin
|
||||||
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(target_info.cprefix+'FPC_ABSMASK_SINGLE',AT_DATA),0,4,[]);
|
sym:=current_asmdata.RefAsmSymbol(target_info.cprefix+'FPC_ABSMASK_SINGLE',AT_DATA,needs_indirect);
|
||||||
|
reference_reset_symbol(href,sym,0,4,[]);
|
||||||
|
current_module.add_extern_asmsym(sym);
|
||||||
tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList, href);
|
tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList, href);
|
||||||
if UseAVX then
|
if UseAVX then
|
||||||
current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg_reg(
|
current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg_reg(
|
||||||
@ -585,7 +595,9 @@ implementation
|
|||||||
end;
|
end;
|
||||||
s64real:
|
s64real:
|
||||||
begin
|
begin
|
||||||
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(target_info.cprefix+'FPC_ABSMASK_DOUBLE',AT_DATA),0,4,[]);
|
sym:=current_asmdata.RefAsmSymbol(target_info.cprefix+'FPC_ABSMASK_DOUBLE',AT_DATA,needs_indirect);
|
||||||
|
reference_reset_symbol(href,sym,0,4,[]);
|
||||||
|
current_module.add_extern_asmsym(sym);
|
||||||
tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList, href);
|
tcgx86(cg).make_simple_ref(current_asmdata.CurrAsmList, href);
|
||||||
if UseAVX then
|
if UseAVX then
|
||||||
current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg_reg(
|
current_asmdata.CurrAsmList.concat(taicpu.op_ref_reg_reg(
|
||||||
|
Loading…
Reference in New Issue
Block a user