This is the mail archive of the gcc-cvs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

r270816 svn:log changed - in /branches/gcc-9-br...


Author: macro
Revision: 270816
Modified property: svn:log

Modified: svn:log at Sat Nov 16 02:17:39 2019
------------------------------------------------------------------------------
--- svn:log (original)
+++ svn:log Sat Nov 16 02:17:39 2019
@@ -1,6 +1,39 @@
 libphobos: RISC-V: Fix soft-float build errors with IEEE exception flags
 
+Fix assembly errors:
+
+.../libphobos/src/std/math.d: Assembler messages:
+.../libphobos/src/std/math.d:4773: Error: unrecognized opcode `frflags a0'
+.../libphobos/src/std/math.d:4856: Error: unrecognized opcode `fsflags a5'
+.../libphobos/src/std/math.d:4856: Error: unrecognized opcode `fsflags a5'
+.../libphobos/src/std/math.d:4773: Error: unrecognized opcode `frflags a0'
+.../libphobos/src/std/math.d:5549: Error: unrecognized opcode `fscsr a5'
+.../libphobos/src/std/math.d:5456: Error: unrecognized opcode `frcsr a5'
+.../libphobos/src/std/math.d:5456: Error: unrecognized opcode `frcsr a5'
+.../libphobos/src/std/math.d:5549: Error: unrecognized opcode `fscsr a5'
+.../libphobos/src/std/math.d:5456: Error: unrecognized opcode `frcsr a5'
+.../libphobos/src/std/math.d:5549: Error: unrecognized opcode `fscsr a0'
+.../libphobos/src/std/math.d:5456: Error: unrecognized opcode `frcsr a0'
+.../libphobos/src/std/math.d:5456: Error: unrecognized opcode `frcsr a0'
+.../libphobos/src/std/math.d:5549: Error: unrecognized opcode `fscsr s2'
+make[8]: *** [Makefile:1119: std/math.lo] Error 1
+
+triggered with the RISC-V lp64 multilib in a GCC build configured with 
+`--enable-multilib --enable-languages=all --target=riscv64-linux-gnu'. 
+This is due to unconditional explicit use of F extension instructions 
+within inline assembly, to access IEEE exception flags.  The use of 
+these instructions is not allowed when building for a soft-float ABI.
+
+Correct the problem by wrapping said inline assembly into a conditional 
+such that if `D_SoftFloat' is true, then reads from IEEE exception flags 
+return 0 and writes are ignored instead, complementing r270522 
+("libphobos: Add D support for RISC-V Linux"), which is an updated 
+version of <https://gcc.gnu.org/ml/gcc-patches/2019-04/msg00325.html>, 
+where the problematic code has originated from.
+
 libphobos/ChangeLog:
+
+2019-05-02  Maciej Rozycki  <macro@wdc.com>
 
 	* std/math.d (IeeeFlags.getIeeeFlags): Handle RISC-V soft-float ABI.
 	(IeeeFlags.resetIeeeFlags): Likewise.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]