diff options
author | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2012-09-06 15:11:54 +0000 |
---|---|---|
committer | florian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2012-09-06 15:11:54 +0000 |
commit | a1e29893763392b5ad2eb94a3dd80e2aecabb7cc (patch) | |
tree | c54c489e18a3a6dbd0dd1a823c3ad12ab2ace191 /compiler | |
parent | 955b9ac5d834c24c856a1815e5df568661a1b1c9 (diff) | |
download | fpc-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.pas | 11 |
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; |