mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 11:09:42 +02:00
* fix tsubscriptnode to handle left.location being an fpu or mm register as well.
git-svn-id: trunk@26642 -
This commit is contained in:
parent
77967432ef
commit
cd6f4d4469
@ -407,8 +407,12 @@ implementation
|
||||
LOC_CONSTANT,
|
||||
LOC_REGISTER,
|
||||
LOC_CREGISTER,
|
||||
{ if a floating point value is casted into a record, it
|
||||
can happen that we get here an fpu or mm register }
|
||||
LOC_MMREGISTER,
|
||||
LOC_FPUREGISTER:
|
||||
LOC_FPUREGISTER,
|
||||
LOC_CMMREGISTER,
|
||||
LOC_CFPUREGISTER:
|
||||
begin
|
||||
{ in case the result is not something that can be put
|
||||
into an integer register (e.g.
|
||||
@ -423,12 +427,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,
|
||||
(location.loc in [LOC_MMREGISTER,LOC_FPUREGISTER,LOC_CMMREGISTER,LOC_CFPUREGISTER,
|
||||
{ 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
|
||||
LOC_CONSTANT]) then
|
||||
hlcg.location_force_mem(current_asmdata.CurrAsmList,location,left.resultdef)
|
||||
else
|
||||
begin
|
||||
|
@ -800,6 +800,12 @@ implementation
|
||||
else
|
||||
begin
|
||||
case left.expectloc of
|
||||
{ if a floating point value is casted into a record, it
|
||||
can happen that we get here an fpu or mm register }
|
||||
LOC_CMMREGISTER,
|
||||
LOC_CFPUREGISTER,
|
||||
LOC_MMREGISTER,
|
||||
LOC_FPUREGISTER,
|
||||
LOC_CONSTANT,
|
||||
LOC_REGISTER,
|
||||
LOC_SUBSETREG:
|
||||
|
Loading…
Reference in New Issue
Block a user