summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-09-06 15:11:54 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-09-06 15:11:54 +0000
commita1e29893763392b5ad2eb94a3dd80e2aecabb7cc (patch)
treec54c489e18a3a6dbd0dd1a823c3ad12ab2ace191 /compiler
parent955b9ac5d834c24c856a1815e5df568661a1b1c9 (diff)
downloadfpc-a1e29893763392b5ad2eb94a3dd80e2aecabb7cc.tar.gz
* nil method pointers can be kept in registers
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@22340 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler')
-rw-r--r--compiler/ncgcnv.pas11
1 files changed, 5 insertions, 6 deletions
diff --git a/compiler/ncgcnv.pas b/compiler/ncgcnv.pas
index 6517c465c3..73d93f5de0 100644
--- a/compiler/ncgcnv.pas
+++ b/compiler/ncgcnv.pas
@@ -526,12 +526,11 @@ interface
exit;
{$endif}
{$endif}
- tg.gethltemp(current_asmdata.currasmlist,methodpointertype,methodpointertype.size,tt_normal,r);
- location_reset_ref(location,LOC_REFERENCE,def_cgsize(resultdef),0);
- location.reference:=r;
- cg.a_load_const_ref(current_asmdata.currasmlist,OS_ADDR,0,r);
- inc(r.offset,sizeof(puint));
- cg.a_load_const_ref(current_asmdata.currasmlist,OS_ADDR,0,r);
+ location_reset(location,LOC_REGISTER,def_cgsize(resultdef));
+ location.registerhi:=cg.getaddressregister(current_asmdata.currasmlist);
+ cg.a_load_const_reg(current_asmdata.currasmlist,OS_ADDR,0,location.registerhi);
+ location.register:=cg.getaddressregister(current_asmdata.currasmlist);
+ cg.a_load_const_reg(current_asmdata.currasmlist,OS_ADDR,0,location.register);
end;
procedure tcgtypeconvnode.second_bool_to_int;