From 546f4a5d46035ffcc88d35c72f0211a8b67b217c Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 30 Jan 2014 19:44:09 +0000 Subject: [PATCH] * force records with LOC_CONSTANT into memory when they are subscripted git-svn-id: trunk@26630 - --- compiler/ncgmem.pas | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/compiler/ncgmem.pas b/compiler/ncgmem.pas index 5c57614157..ae7456dd03 100644 --- a/compiler/ncgmem.pas +++ b/compiler/ncgmem.pas @@ -423,7 +423,12 @@ implementation memory as well } ((left.location.size in [OS_PAIR,OS_SPAIR]) and (vs.fieldoffset div sizeof(aword)<>(vs.fieldoffset+vs.getsize-1) div sizeof(aword))) or - (location.loc in [LOC_MMREGISTER,LOC_FPUREGISTER]) then + (location.loc in [LOC_MMREGISTER,LOC_FPUREGISTER, + { actually, we should be able to "subscript" a constant, but this would require some code + which enables dumping and reading constants from a temporary memory buffer. This + must be done a CPU dependent way, so it is not easy and probably not worth the effort (FK) + } + LOC_CONSTANT]) then hlcg.location_force_mem(current_asmdata.CurrAsmList,location,left.resultdef) else begin