Browse Source

Corrected part type for high part of double precision floating point complex registers

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6765 8c9fc860-2736-0410-a75d-ab315db34111
felixf 9 years ago
parent
commit
d8297e4250
1 changed files with 5 additions and 1 deletions
  1. 5 1
      source/FoxARMBackend.Mod

+ 5 - 1
source/FoxARMBackend.Mod

@@ -1353,7 +1353,11 @@ TYPE
 				IF part = Low THEN
 					partType := IntermediateCode.NewType(IntermediateCode.UnsignedInteger, 32) (* conceptually the low part is always unsigned *)
 				ELSE
-					partType := IntermediateCode.NewType(type.form, 32)
+					IF type.form = IntermediateCode.Float THEN
+						partType := IntermediateCode.NewType(IntermediateCode.SignedInteger, 32)
+					ELSE
+						partType := IntermediateCode.NewType(type.form, 32)
+					END;
 				END
 			ELSE
 				HALT(100)