* fixed LLVM code generator not taking into account constalignmin/max

settings for typed constants

git-svn-id: trunk@40605 -
This commit is contained in:
Jonas Maebe 2018-12-21 20:57:22 +00:00
parent 4f72edcdd5
commit f87304f5ca
2 changed files with 11 additions and 3 deletions

View File

@ -269,6 +269,8 @@ type
{ finalize the asmlist: add the necessary symbols etc }
procedure finalize_asmlist(sym: tasmsymbol; def: tdef; section: TAsmSectiontype; const secname: TSymStr; alignment: shortint; const options: ttcasmlistoptions); virtual;
procedure finalize_asmlist_add_indirect_sym(sym: tasmsymbol; def: tdef; section: TAsmSectiontype; const secname: TSymStr; alignment: shortint; const options: ttcasmlistoptions); virtual;
{ prepare finalization (common for the default and overridden versions }
procedure finalize_asmlist_prepare(const options: ttcasmlistoptions; var alignment: shortint);
{ functionality of the above for vectorized dead strippable sections }
procedure finalize_vectorized_dead_strip_asmlist(def: tdef; const basename, itemname: TSymStr; st: tsymtable; alignment: shortint; options: ttcasmlistoptions); virtual;
@ -928,9 +930,7 @@ implementation
end;
procedure ttai_typedconstbuilder.finalize_asmlist(sym: tasmsymbol; def: tdef; section: TAsmSectiontype; const secname: TSymStr; alignment: shortint; const options: ttcasmlistoptions);
var
prelist: tasmlist;
procedure ttai_typedconstbuilder.finalize_asmlist_prepare(const options: ttcasmlistoptions; var alignment: shortint);
begin
if tcalo_apply_constalign in options then
alignment:=const_align(alignment);
@ -946,7 +946,14 @@ implementation
tcalo_vectorized_dead_strip_end]*options)<>[]) and
not fvectorized_finalize_called then
internalerror(2015110602);
end;
procedure ttai_typedconstbuilder.finalize_asmlist(sym: tasmsymbol; def: tdef; section: TAsmSectiontype; const secname: TSymStr; alignment: shortint; const options: ttcasmlistoptions);
var
prelist: tasmlist;
begin
finalize_asmlist_prepare(options, alignment);
prelist:=tasmlist.create;
{ only now add items based on the symbolname, because it may be
modified by the "section" specifier in case of a typed constant }

View File

@ -188,6 +188,7 @@ implementation
newasmlist: tasmlist;
decl: taillvmdecl;
begin
finalize_asmlist_prepare(options,alignment);
newasmlist:=tasmlist.create;
if assigned(foverriding_def) then
def:=foverriding_def;