Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0000098 [libFirm] x86 ia32 backend major always 2012-12-17 17:25 2016-01-03 03:28
Reporter Matze View Status public  
Assigned To Matze
Priority normal Resolution fixed  
Status closed   Product Version 1.21.0
Summary 0000098: floating point spilling
Description With the current scheme of setting an architecture dependent floatingpoint arithmetic mode, we have a problem when spilling: Semantically we would need to spill the whole 80bit of mode_E, though in practice this results in slow code and all other compilers spill 64bit/32bit if the original code involved only double/float. However in the current firm representation we can't differentiate between float/double/long double values, they are all mode_E...
Additional Information This leads to errors in the attached program (compile with -O1, otherwise there won't be a spill).
Tags No tags attached.
Attached Files c file icon bug_float_ldbl.c [^] (450 bytes) 2012-12-17 17:25

- Relationships

-  Notes
Matze (administrator)
2012-12-17 18:30

After some analysis (=good remarks from dalias on irc ;-) it seems like spilling the full mode_E is always the correct thing to do and even gcc/clang do that by default.
Spilling mode_F/mode_D only has to be considered a backend optimisation which we can do exactly when we know that the spilled value doesn't have more precision...
Matze (administrator)
2014-04-07 16:20

fixed in d74c690d1e2b3558fff79412fd0e15aa36cd3f5a

- Issue History
Date Modified Username Field Change
2012-12-17 17:25 Matze New Issue
2012-12-17 17:25 Matze File Added: bug_float_ldbl.c
2012-12-17 17:26 Matze Status new => confirmed
2012-12-17 18:30 Matze Note Added: 0000148
2012-12-17 18:30 Matze Severity minor => major
2012-12-17 18:37 Matze Summary spilling mode_E values => floating point spilling
2014-04-07 16:20 Matze Note Added: 0000213
2014-04-07 16:20 Matze Assigned To => Matze
2014-04-07 16:20 Matze Status confirmed => resolved
2014-04-07 16:20 Matze Resolution open => fixed
2016-01-03 03:28 Matze Status resolved => closed

Mantis 1.1.5[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker