summaryrefslogtreecommitdiff
path: root/compiler/powerpc/nppcadd.pas
diff options
context:
space:
mode:
authorjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-05-13 12:33:10 +0000
committerjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-05-13 12:33:10 +0000
commit1949b0ae7a99a0a962f47cd0b3cb4ae1cd49e28a (patch)
tree85385feefb7b55b015f354b565a8b65dc8e80acb /compiler/powerpc/nppcadd.pas
parent85d6f98a942a3065649b449d5a8a965588350312 (diff)
downloadfpc-1949b0ae7a99a0a962f47cd0b3cb4ae1cd49e28a.tar.gz
* moved subsetref/reg and bit_set/test support from cgobj to hlcgobj for
future use by high level code generator targets o this in turn required that all a_load*_loc* methods are called via hlcg rather than via cg, since a location can be a subsetref/reg and and those are no longer handled in tcg o that then required moving several force_location_* routines into thlcg because they use a_load_loc*, but did not take tdef size parameters (which are required by the thlcg a_load_loc* routines) o the only practical consequence is that from now on, you have to use hlcg.location_force_mem/reg() (fpureg not yet) and hlcg.gen_load_loc_cgpara() instead of the removed versions from ncgutil, and hlcg.a_load*loc*() instead of cg.a_load*loc* if a subsetref/reg might be involved git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@21287 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/powerpc/nppcadd.pas')
-rw-r--r--compiler/powerpc/nppcadd.pas12
1 files changed, 6 insertions, 6 deletions
diff --git a/compiler/powerpc/nppcadd.pas b/compiler/powerpc/nppcadd.pas
index 00e424baab..7b38f363de 100644
--- a/compiler/powerpc/nppcadd.pas
+++ b/compiler/powerpc/nppcadd.pas
@@ -51,7 +51,7 @@ interface
cgbase,cpuinfo,pass_1,pass_2,regvars,
cpupara,cgcpu,cgutils,procinfo,
ncon,nset,
- ncgutil,tgobj,rgobj,rgcpu,cgobj,cg64f32;
+ ncgutil,tgobj,rgobj,rgcpu,cgobj,hlcgobj,cg64f32;
{*****************************************************************************
@@ -436,8 +436,8 @@ interface
else
begin
// const32 - reg64
- location_force_reg(current_asmdata.CurrAsmList,left.location,
- OS_32,true);
+ hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,
+ left.resultdef,u32inttype,true);
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_SUBC,
location.register64.reglo,left.location.register64.reglo,
right.location.register64.reglo));
@@ -451,7 +451,7 @@ interface
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_const(A_SUBFIC,
location.register64.reglo,right.location.register64.reglo,0));
left.location.value64 := left.location.value64 shr 32;
- location_force_reg(current_asmdata.CurrAsmList,left.location,OS_32,true);
+ hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,u32inttype,true);
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_SUBFE,
location.register64.reghi,right.location.register64.reghi,
left.location.register));
@@ -459,8 +459,8 @@ interface
else
begin
// const64 - reg64
- location_force_reg(current_asmdata.CurrAsmList,left.location,
- def_cgsize(left.resultdef),false);
+ hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,
+ left.resultdef,left.resultdef,false);
cg64.a_op64_reg_reg_reg(current_asmdata.CurrAsmList,OP_SUB,location.size,
right.location.register64,left.location.register64,
location.register64);