|
@@ -458,10 +458,10 @@ implementation
|
|
|
new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,result.name,const_align(8));
|
|
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(lab));
|
|
|
if (source_info.endian=target_info.endian) then
|
|
|
- for i:=0 to 31 do
|
|
|
+ for i:=0 to resultdef.size-1 do
|
|
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_8bit(Psetbytes(value_set)^[i]))
|
|
|
else
|
|
|
- for i:=0 to 31 do
|
|
|
+ for i:=0 to resultdef.size-1 do
|
|
|
current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_8bit(reverse_byte(Psetbytes(value_set)^[i])));
|
|
|
end;
|
|
|
|
|
@@ -474,7 +474,7 @@ implementation
|
|
|
{ const already used ? }
|
|
|
if not assigned(lab_set) then
|
|
|
begin
|
|
|
- entry := current_asmdata.ConstPools[sp_varsets].FindOrAdd(value_set, 32);
|
|
|
+ entry := current_asmdata.ConstPools[sp_varsets].FindOrAdd(value_set, resultdef.size);
|
|
|
|
|
|
{ :-(, we must generate a new entry }
|
|
|
if not assigned(entry^.Data) then
|
|
@@ -515,41 +515,6 @@ implementation
|
|
|
location.value:=location.value shr (32-resultdef.size*8);
|
|
|
end;
|
|
|
|
|
|
- procedure varsetconst;
|
|
|
- var
|
|
|
- lastlabel : tasmlabel;
|
|
|
- i : longint;
|
|
|
- entry : PHashSetItem;
|
|
|
- begin
|
|
|
- location_reset_ref(location,LOC_CREFERENCE,OS_NO,const_align(8));
|
|
|
- lastlabel:=nil;
|
|
|
- { const already used ? }
|
|
|
- if not assigned(lab_set) then
|
|
|
- begin
|
|
|
- entry := current_asmdata.ConstPools[sp_varsets].FindOrAdd(value_set, 32);
|
|
|
-
|
|
|
- lab_set := TAsmLabel(entry^.Data); // is it needed anymore?
|
|
|
-
|
|
|
- { :-(, we must generate a new entry }
|
|
|
- if not assigned(entry^.Data) then
|
|
|
- begin
|
|
|
- current_asmdata.getglobaldatalabel(lastlabel);
|
|
|
- lab_set:=lastlabel;
|
|
|
- entry^.Data:=lastlabel;
|
|
|
- maybe_new_object_file(current_asmdata.asmlists[al_typedconsts]);
|
|
|
- new_section(current_asmdata.asmlists[al_typedconsts],sec_rodata_norel,lastlabel.name,const_align(8));
|
|
|
- current_asmdata.asmlists[al_typedconsts].concat(Tai_label.Create(lastlabel));
|
|
|
- if (source_info.endian=target_info.endian) then
|
|
|
- for i:=0 to 31 do
|
|
|
- current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_8bit(Psetbytes(value_set)^[i]))
|
|
|
- else
|
|
|
- for i:=0 to 31 do
|
|
|
- current_asmdata.asmlists[al_typedconsts].concat(Tai_const.Create_8bit(reverse_byte(Psetbytes(value_set)^[i])));
|
|
|
- end;
|
|
|
- end;
|
|
|
- location.reference.symbol:=lab_set;
|
|
|
- end;
|
|
|
-
|
|
|
begin
|
|
|
adjustforsetbase;
|
|
|
|