gcc-4.1 -v -save-temps -msse2 gnu_bug_test.c
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr
--with-local-prefix=/usr/local --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.1.3
--enable-ssp --disable-libssp --disable-libgcj --with-slibdir=/lib
--with-system-zlib --enable-shared --enable-__cxa_atexit
--enable-libstdcxx-allocator=new --program-suffix=-4.1
--enable-version-specific-runtime-libs --without-system-libunwind
--with-cpu=generic --host=i586-suse-linux
Thread model: posix
gcc version 4.1.3 20080612 (prerelease) (SUSE Linux)
 /usr/lib/gcc/i586-suse-linux/4.1.3/cc1 -E -quiet -v gnu_bug_test.c -msse2
-mtune=generic -fpch-preprocess -o gnu_bug_test.i
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i586-suse-linux/4.1.3/include
 /usr/lib/gcc/i586-suse-linux/4.1.3/../../../../i586-suse-linux/include
 /usr/include
End of search list.
 /usr/lib/gcc/i586-suse-linux/4.1.3/cc1 -fpreprocessed gnu_bug_test.i -quiet
-dumpbase gnu_bug_test.c -msse2 -mtune=generic -auxbase gnu_bug_test -version
-o gnu_bug_test.s
GNU C version 4.1.3 20080612 (prerelease) (SUSE Linux) (i586-suse-linux)
        compiled by GNU C version 4.1.3 20080612 (prerelease) (SUSE Linux).
GGC heuristics: --param ggc-min-expand=93 --param ggc-min-heapsize=119353
Compiler executable checksum: 706a2c29a4ed82ef6d0aa55a96477d0c
 /usr/lib/gcc/i586-suse-linux/4.1.3/../../../../i586-suse-linux/bin/as -V -Qy
-o gnu_bug_test.o gnu_bug_test.s
GNU assembler version 2.19 (i586-suse-linux) using BFD version (GNU Binutils;
openSUSE 11.1) 2.19
gnu_bug_test.s: Assembler messages:
gnu_bug_test.s:30: Error: suffix or operands invalid for `mul'
gnu_bug_test.s:31: Error: suffix or operands invalid for `add'
gnu_bug_test.s:32: Error: suffix or operands invalid for `adc'


gnu_bug_test.i
# 1 "gnu_bug_test.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "gnu_bug_test.c"
# 15 "gnu_bug_test.c"
int main()
{
    unsigned long a[1];
    unsigned long b[1];
    unsigned long r[2];

    a[0] = b[0] = 0xFFFFFFFF;

    { __asm __volatile ( "mul   %3                          \n\t" "add   %2, %0
                     \n\t" "adc   %3, %1                      \n\t" :
"=r"(r[0]),"=r"(r[1]) : "eax"(a[0]),"edx"(b[0]), "0"(r[0]),"1"(r[1]) : "cc");
};

    return 0;
}


-- 
           Summary: wrong register (xmm) used when compiling inline assembly
                    with msse2 option
           Product: gcc
           Version: 4.1.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: inline-asm
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: fabrice at mocana dot com
 GCC build triplet: i586-suse-linux
  GCC host triplet: i586-suse-linux
GCC target triplet: i586-suse-linux


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

Reply via email to