Bug 26607 - [4.1/4.2 Regression] Illegal inlined assembler on config/rs6000/darwin-ldouble.c
Summary: [4.1/4.2 Regression] Illegal inlined assembler on config/rs6000/darwin-ldouble.c
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.2.0
: P3 blocker
Target Milestone: 4.1.1
Assignee: Alan Modra
URL: http://gcc.gnu.org/ml/gcc-patches/200...
Keywords: build, patch
Depends on:
Blocks:
 
Reported: 2006-03-08 18:58 UTC by Edmar Wienskoski
Modified: 2006-03-23 22:37 UTC (History)
3 users (show)

See Also:
Host:
Target: powerpc-unknown-linux-gnuspe
Build:
Known to work:
Known to fail:
Last reconfirmed: 2006-03-21 05:14:03


Attachments
Intermediate file for reported bug (718 bytes, text/plain)
2006-03-08 19:01 UTC, Edmar Wienskoski
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Edmar Wienskoski 2006-03-08 18:58:56 UTC
Gcc cannot process in-lined assembler, when configured for powerpc-gnuspe target (Note: that target does not have float point registers, but it has float point sinstructions that operates on the general purpose registers).

ra8797:/local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/gcc> /local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/xgcc -B/local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/ -B/local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/bin/ -B/local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/lib/ -isystem /local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/include -isystem /local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/sys-include -O2  -O2 -g -O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fPIC -specs=ldblspecs -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I -I../../gcc-trunk/gcc -I../../gcc-trunk/gcc/ -I../../gcc-trunk/gcc/../include -I../../gcc-trunk/gcc/../libcpp/include  -I../../gcc-trunk/gcc/../libdecnumber -I../libdecnumber -fPIC -mstrict-align -fvisibility=hidden -DHIDE_EXPORTS -c ../../gcc-trunk/gcc/config/rs6000/darwin-ldouble.c -o libgcc/./darwin-ldouble.o --save-temps -v
Reading specs from /local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/specs
Reading specs from /local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/ldblspecs
Target: powerpc-unknown-linux-gnuspe
Configured with: ../gcc-trunk/configure --prefix=/local/gnu_toolchain/install-gcc-trunk-20060308-e500v1 --with-local-prefix=/local/gnu_toolchain/install-gcc-trunk-20060308-e500v1 --enable-languages=c,c++ --enable-threads --target=powerpc-unknown-linux-gnuspe
Thread model: posix
gcc version 4.2.0 20060308 (experimental)
 /local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/cc1 -E -quiet -v -I. -I -I../../gcc-trunk/gcc -I../../gcc-trunk/gcc/ -I../../gcc-trunk/gcc/../include -I../../gcc-trunk/gcc/../libcpp/include -I../../gcc-trunk/gcc/../libdecnumber -I../libdecnumber -iprefix /temp/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/gcc/../lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/ -isystem /local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/include -D__unix__ -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux -D__linux -Asystem=linux -Asystem=unix -Asystem=posix -DIN_GCC -DCROSS_COMPILE -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -DHIDE_EXPORTS -isystem /local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/include -isystem /local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/sys-include -isystem ./include ../../gcc-trunk/gcc/config/rs6000/darwin-ldouble.c -mstrict-align -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fPIC -fPIC -fvisibility=hidden -fworking-directory -O2 -O2 -O2 -fpch-preprocess -o darwin-ldouble.i
ignoring nonexistent directory "/local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/include"
ignoring duplicate directory "./include"
ignoring nonexistent directory "/temp/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/gcc/../lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/include"
ignoring nonexistent directory "/temp/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/gcc/../lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/../../../../powerpc-unknown-linux-gnuspe/sys-include"
ignoring nonexistent directory "/temp/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/gcc/../lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/../../../../powerpc-unknown-linux-gnuspe/include"
ignoring duplicate directory "/local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/../../../../powerpc-unknown-linux-gnuspe/sys-include"
ignoring nonexistent directory "/local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/../../../../powerpc-unknown-linux-gnuspe/include"
ignoring nonexistent directory "-I../../gcc-trunk/gcc"
#include "..." search starts here:
#include <...> search starts here:
 .
 ../../gcc-trunk/gcc/
 ../../gcc-trunk/gcc/../include
 ../../gcc-trunk/gcc/../libcpp/include
 ../../gcc-trunk/gcc/../libdecnumber
 ../libdecnumber
 /local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/include
 /local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/powerpc-unknown-linux-gnuspe/sys-include
 /local/gnu_toolchain/install-gcc-trunk-20060308-e500v1/lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/include
End of search list.
 /local/gnu_toolchain/build_area/obj_gcc_gcc-trunk_e500v1/./gcc/cc1 -fpreprocessed darwin-ldouble.i -quiet -dumpbase darwin-ldouble.c -mstrict-align -auxbase-strip libgcc/./darwin-ldouble.o -g -g -O2 -O2 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -version -fPIC -fPIC -fvisibility=hidden -mlong-double-128 -o darwin-ldouble.s
GNU C version 4.2.0 20060308 (experimental) (powerpc-unknown-linux-gnuspe)
        compiled by GNU C version 3.4.3.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 992a552977f881ca86a06270e1959aa6
../../gcc-trunk/gcc/config/rs6000/darwin-ldouble.c: In function '__gcc_qdiv':
../../gcc-trunk/gcc/config/rs6000/darwin-ldouble.c:189: error: impossible constraint in 'asm'
Comment 1 Edmar Wienskoski 2006-03-08 19:01:28 UTC
Created attachment 10994 [details]
Intermediate file for reported bug
Comment 2 Edmar Wienskoski 2006-03-08 19:10:21 UTC
Same error observed on gcc-4_1-branch 20060308
Comment 3 Andrew Pinski 2006-03-08 19:11:58 UTC
This was caused by the 128bit long doubles patches (well really caused by a secondary patch to work around a code gen issue).
Comment 4 Andrew Pinski 2006-03-08 22:21:02 UTC
I should had looked into this one.  This is what I was afraid of when this idea 128bits long double went it.  It was not the optimization which I thought was applied but instead just the compiling of darwin-ldouble.c on powerpc-linux-gnuspe which caused it:
        2006-01-27  David Edelsohn  <edelsohn@gnu.org>
                    Alan Modra  <amodra@bigpond.net.au>

        * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
Comment 5 Alan Modra 2006-03-23 22:23:28 UTC
Subject: Bug 26607

Author: amodra
Date: Thu Mar 23 22:23:24 2006
New Revision: 112334

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=112334
Log:
	PR target/26607
	* config/rs6000/darwin-ldouble.c: Don't compile when __NO_FPRS__
	or __LITTLE_ENDIAN__.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/rs6000/darwin-ldouble.c

Comment 6 Alan Modra 2006-03-23 22:24:05 UTC
Subject: Bug 26607

Author: amodra
Date: Thu Mar 23 22:23:58 2006
New Revision: 112335

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=112335
Log:
	PR target/26607
	* config/rs6000/darwin-ldouble.c: Don't compile when __NO_FPRS__
	or __LITTLE_ENDIAN__.


Modified:
    branches/gcc-4_1-branch/gcc/ChangeLog
    branches/gcc-4_1-branch/gcc/config/rs6000/darwin-ldouble.c

Comment 7 Alan Modra 2006-03-23 22:37:27 UTC
fixed