$ cat const.c #define B0 (+1.0l/5/1/6) const double c0 = B0; // initializer element is not computable at load time const double c0_tab[1] = { B0 }; // initializer element is not constant #define B1 (+1.0l/5) const double c1 = B1; // ok. const double c1_tab[1] = { B1 }; // initializer element is not constant $ gcc const.c const.c:3: error: initializer element is not computable at load time const.c:4: error: initializer element is not constant const.c:4: error: (near initialization for 'c0_tab[0]') const.c:9: error: initializer element is not constant const.c:9: error: (near initialization for 'c1_tab[0]') gcc-4.1.0-rc1 with long-double-128 patchset.
This is a dup of bug 26374. The problem is that the middle-end does not fold IBM 128bit long double format currently. See PR 19405 for history on why. *** This bug has been marked as a duplicate of 26374 ***