When I try compile code with 128 bit long double arithmetic, I get a request to
file a bug report (and the compile fails).  Below is a command line, the source
file, the g++ output.  They are separated by "%% <identifier> %%".  If you need
the intermediate files test.ii and test.s, I can send them.  Without the flag
-mlong-double-128, the code compiles and runs.

%% command line %%

g++-3.4.3 -v -save-temps -mlong-double-128 test.cxx -o test >& g++.out

%% test.cxx %%

#include <iostream>

using namespace std;

int main() {
        cout << "sizeof(float)=" << sizeof(float) << endl;
        cout << "sizeof(double)=" << sizeof(double) << endl;
        cout << "sizeof(long double)=" << sizeof(long double) << endl;
        long double a, b;
        a = b = 1.0L;
        do {
                b = b/2;
        } while ((a+b)!=a);
        cout << "long double epsilon = " << b << endl;
        return 0;
}

%% g++ output %%

Reading specs from
/opt/local/lib/gcc-3.4.3/gcc/powerpc-apple-darwin7.8.0/3.4.3/specs
Configured with:
/Users/brian/darwinports/dports/lang/gcc34/work/gcc-3.4.3/configure
--prefix=/opt/local --enable-languages=c,c++,f77
--libdir=/opt/local/lib/gcc-3.4.3 --infodir=/opt/local/share/info
--mandir=/opt/local/share/man --with-system-zlib --disable-nls
--program-suffix=-3.4.3
--with-gxx-include-dir=/opt/local/include/gcc-3.4.3/c++/3.4.3
Thread model: posix
gcc version 3.4.3
 /opt/local/libexec/gcc/powerpc-apple-darwin7.8.0/3.4.3/cc1plus -E -quiet -v
-D__DYNAMIC__ test.cxx -fPIC -mlong-double-128 -o test.ii
ignoring nonexistent directory
"/opt/local/lib/gcc-3.4.3/gcc/powerpc-apple-darwin7.8.0/3.4.3/../../../../powerpc-apple-darwin7.8.0/include"
#include "..." search starts here:
#include <...> search starts here:
 /opt/local/include/gcc-3.4.3/c++/3.4.3
 /opt/local/include/gcc-3.4.3/c++/3.4.3/powerpc-apple-darwin7.8.0
 /opt/local/include/gcc-3.4.3/c++/3.4.3/backward
 /usr/local/include
 /opt/local/include
 /opt/local/lib/gcc-3.4.3/gcc/powerpc-apple-darwin7.8.0/3.4.3/include
 /usr/include
End of search list.
 /opt/local/libexec/gcc/powerpc-apple-darwin7.8.0/3.4.3/cc1plus -fpreprocessed
test.ii -fPIC -quiet -dumpbase test.cxx -mlong-double-128 -auxbase test -version
-o test.s
GNU C++ version 3.4.3 (powerpc-apple-darwin7.8.0)
        compiled by GNU C version 3.4.3.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
test.cxx: In function `int main()':
test.cxx:16: error: insn does not satisfy its constraints:
(insn 88 165 166 (set (reg:DI 35 f3)
        (mem/u/f:DI (lo_sum:SI (reg:SI 2 r2)
                (const:SI (minus:SI (symbol_ref/u:SI ("*LC4") [flags 0x2])
                        (symbol_ref:SI ("<pic base>"))))) [0 S8 A64])) 327
{*movdi_internal32} (nil)
    (nil))
test.cxx:16: internal compiler error: in final_scan_insn, at final.c:2359
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

-- 
           Summary: -mlong-double-128 arithmetic error
           Product: gcc
           Version: 3.4.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: coomes at math dot miami dot edu
                CC: coomes at math dot miami dot edu,gcc-bugs at gcc dot gnu
                    dot org
 GCC build triplet: powerpc-apple-darwin7.8.0
  GCC host triplet: powerpc-apple-darwin7.8.0
GCC target triplet: powerpc-apple-darwin7.8.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20820

Reply via email to