[GHC] #12849: hsc2hs trouble with floating-point constants in cross-compilation mode

GHC ghc-devs at haskell.org
Thu Nov 17 21:07:40 UTC 2016


#12849: hsc2hs trouble with floating-point constants in cross-compilation mode
-------------------------------------+-------------------------------------
        Reporter:  rwbarton          |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  hsc2hs            |              Version:  7.8.4
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by rwbarton):

 I did some experiments with
 {{{
 gcc (Debian 5.3.1-6) 5.3.1 20160114
 }}}
 which also has this issue and
 {{{
 Debian clang version 3.6.2-3 (tags/RELEASE_362/final) (based on LLVM
 3.6.2)
 }}}
 which does not.

 There seems to be a class of what appear to be constant expressions
 involving floating-point constants which has the following behavior:

 * If used as the size of a local static array, gcc gives an error like
 `storage size of ‘x’ isn’t constant`.

 * If used as the size of a global array, gcc gives a ''warning'' `variably
 modified ‘x’ at file scope`. But it's not fatal, and clearly gcc must know
 the actual size of the array. Very strange!

   (If the size of a global array is not a constant expression at all, then
 gcc gives the same message but as an ''error''.)

 The simplest example of such an expression I found was `(int)(1.0 + 1)`.

 Clang seems to have no problem with floating-point numbers in constant
 expressions.

 So, if we can switch to use global arrays instead of local static arrays
 for the tests, and ignore these `variably modified` warnings from gcc, we
 should be able to handle constant expressions involving floating-point
 numbers correctly.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12849#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list