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