This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug inline-asm/82225] New: Unexpected nondeterministic "internal compiler error: Segmentation fault" when gcc is expected to save either rsp or rbp to allow its use in inline asm


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82225

            Bug ID: 82225
           Summary: Unexpected nondeterministic "internal compiler error:
                    Segmentation fault" when gcc is expected to save
                    either rsp or rbp to allow its use in inline asm
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: inline-asm
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jasongross9+bugzilla at gmail dot com
  Target Milestone: ---

Created attachment 42185
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42185&action=edit
.tgz containing the c code

This bug only shows up on some runs of gcc (maybe 70% of them).  It does not
show up when I compile the .i files emitted by -save-temps, so far as I can
tell.

gcc is installed from the ubuntu package gcc-7

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
7.2.0-1ubuntu1~16.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr
--with-gcc-major-version-only --program-suffix=-7
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib
--with-target-system-zlib --enable-objc-gc=auto --enable-multiarch
--disable-werror --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none --without-cuda-driver
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 7.2.0 (Ubuntu 7.2.0-1ubuntu1~16.04) 

$ uname -a
Linux jgross-Leopard-WS 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC
2017 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial

$ gcc -o measure -I liblow measure.c scalarmult_noladderstep.c
femul_scheduled.c -D UUT=crypto_scalarmult_bench
scalarmult_noladderstep.c:97:1: warning: always_inline function might not be
inlinable [-Wattributes]
 fmul(felem output, const felem in2, const felem in) {
 ^~~~
In file included from scalarmult_noladderstep.c:32:0:
femul.h:6:19: warning: always_inline function might not be inlinable
[-Wattributes]
 void force_inline femul(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t
x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17,
uint64_t x15, uint64_t x13);
                   ^~~~~
scalarmult_noladderstep.c: In function ‘fmul’:
femul.h:6:19: error: inlining failed in call to always_inline ‘femul’: function
body not available
scalarmult_noladderstep.c:99:3: note: called from here
   femul(out,
   ^~~~~~~~~~
       in2[4], in2[3], in2[2], in2[1], in2[0],
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       in[4], in[3], in[2], in[1], in[0]);
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
femul_scheduled.c:19:19: warning: always_inline function might not be inlinable
[-Wattributes]
 void force_inline femul(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t
x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17,
uint64_t x15, uint64_t x13) {
                   ^~~~~
femul_scheduled.c: In function ‘femul’:
femul_scheduled.c:221:1: internal compiler error: Segmentation fault
 }
 ^
0x9e0c5f crash_signal
        ../../src/gcc/toplev.c:337
0x8b6cd0 lra_eliminate_reg_if_possible(rtx_def**)
        ../../src/gcc/lra-eliminations.c:1385
0x8a66c6 address_eliminator
        ../../src/gcc/lra-constraints.c:362
0x8a67d5 satisfies_address_constraint_p
        ../../src/gcc/lra-constraints.c:411
0x8ae3c9 satisfies_address_constraint_p
        ../../src/gcc/lra-constraints.c:423
0x8ae3c9 process_alt_operands
        ../../src/gcc/lra-constraints.c:2274
0x8ae3c9 curr_insn_transform
        ../../src/gcc/lra-constraints.c:3848
0x8b098e lra_constraints(bool)
        ../../src/gcc/lra-constraints.c:4847
0x89fe84 lra(_IO_FILE*)
        ../../src/gcc/lra.c:2392
0x85e0e1 do_reload
        ../../src/gcc/ira.c:5472
0x85e0e1 execute
        ../../src/gcc/ira.c:5656
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.

With -v -save-temps:

$ gcc -v -save-temps -o measure -I liblow measure.c scalarmult_noladderstep.c
femul_scheduled.c -D UUT=crypto_scalarmult_bench
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
7.2.0-1ubuntu1~16.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr
--with-gcc-major-version-only --program-suffix=-7
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib
--with-target-system-zlib --enable-objc-gc=auto --enable-multiarch
--disable-werror --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none --without-cuda-driver
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu  
Thread model: posix
gcc version 7.2.0 (Ubuntu 7.2.0-1ubuntu1~16.04)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -E -quiet -v -I liblow -imultiarch
x86_64-linux-gnu -D UUT=crypto_scalarmult_bench measure.c -mtune=generic
-march=x86-64 -fpch-preprocess -fstack-protector-strong -Wformat
-Wformat-security -o measure.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 liblow
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -fpreprocessed measure.i -quiet -dumpbase
measure.c -mtune=generic -march=x86-64 -auxbase measure -version
-fstack-protector-strong -Wformat -Wformat-security -o measure.s
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 55ea8e2f6e6b46a828851b4b8f05801c
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 as -v -I liblow --64 -o measure.o measure.s
GNU assembler version 2.26.1 (x86_64-linux-gnu) using BFD version (GNU Binutils
for Ubuntu) 2.26.1
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -E -quiet -v -I liblow -imultiarch
x86_64-linux-gnu -D UUT=crypto_scalarmult_bench scalarmult_noladderstep.c
-mtune=generic -march=x86-64 -fpch-preprocess -fstack-protector-strong -Wformat
-Wformat-security -o scalarmult_noladderstep.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 liblow
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -fpreprocessed scalarmult_noladderstep.i
-quiet -dumpbase scalarmult_noladderstep.c -mtune=generic -march=x86-64
-auxbase scalarmult_noladderstep -version -fstack-protector-strong -Wformat
-Wformat-security -o scalarmult_noladderstep.s
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 55ea8e2f6e6b46a828851b4b8f05801c
scalarmult_noladderstep.c:97:1: warning: always_inline function might not be
inlinable [-Wattributes]
 fmul(felem output, const felem in2, const felem in) {
 ^~~~
In file included from scalarmult_noladderstep.c:32:0:
femul.h:6:37: warning: always_inline function might not be inlinable
[-Wattributes]
 void force_inline femul(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t
x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17,
uint64_t x15, uint64_t x13);
                                     ^~~~~
scalarmult_noladderstep.c: In function ‘fmul’:
femul.h:6:37: error: inlining failed in call to always_inline ‘femul’: function
body not available
scalarmult_noladderstep.c:99:3: note: called from here
   femul(out,
   ^~~~~~~~~~
       in2[4], in2[3], in2[2], in2[1], in2[0],
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       in[4], in[3], in[2], in[1], in[0]);
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -E -quiet -v -I liblow -imultiarch
x86_64-linux-gnu -D UUT=crypto_scalarmult_bench femul_scheduled.c
-mtune=generic -march=x86-64 -fpch-preprocess -fstack-protector-strong -Wformat
-Wformat-security -o femul_scheduled.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 liblow
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -fpreprocessed femul_scheduled.i -quiet
-dumpbase femul_scheduled.c -mtune=generic -march=x86-64 -auxbase
femul_scheduled -version -fstack-protector-strong -Wformat -Wformat-security -o
femul_scheduled.s
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 55ea8e2f6e6b46a828851b4b8f05801c
femul_scheduled.c:19:37: warning: always_inline function might not be inlinable
[-Wattributes]
 void force_inline femul(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t
x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17,
uint64_t x15, uint64_t x13) {
                                     ^~~~~
femul_scheduled.c: In function ‘femul’:
femul_scheduled.c:221:1: internal compiler error: Segmentation fault
 }
 ^
0x9e0c5f crash_signal
        ../../src/gcc/toplev.c:337
0x8b6cd0 lra_eliminate_reg_if_possible(rtx_def**)
        ../../src/gcc/lra-eliminations.c:1385
0x8a66c6 address_eliminator
        ../../src/gcc/lra-constraints.c:362
0x8a67d5 satisfies_address_constraint_p
        ../../src/gcc/lra-constraints.c:411
0x8ae3c9 satisfies_address_constraint_p
        ../../src/gcc/lra-constraints.c:423
0x8ae3c9 process_alt_operands
        ../../src/gcc/lra-constraints.c:2274
0x8ae3c9 curr_insn_transform
        ../../src/gcc/lra-constraints.c:3848
0x8b098e lra_constraints(bool)
        ../../src/gcc/lra-constraints.c:4847
0x89fe84 lra(_IO_FILE*)
        ../../src/gcc/lra.c:2392
0x85e0e1 do_reload
        ../../src/gcc/ira.c:5472
0x85e0e1 execute
        ../../src/gcc/ira.c:5656
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.





Other times, it works fine:
$ gcc -v -save-temps -o measure -I liblow measure.c scalarmult_noladderstep.c
femul_scheduled.c -D UUT=crypto_scalarmult_bench
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
7.2.0-1ubuntu1~16.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr
--with-gcc-major-version-only --program-suffix=-7
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib
--with-target-system-zlib --enable-objc-gc=auto --enable-multiarch
--disable-werror --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none --without-cuda-driver
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu  
Thread model: posix
gcc version 7.2.0 (Ubuntu 7.2.0-1ubuntu1~16.04)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -E -quiet -v -I liblow -imultiarch
x86_64-linux-gnu -D UUT=crypto_scalarmult_bench measure.c -mtune=generic
-march=x86-64 -fpch-preprocess -fstack-protector-strong -Wformat
-Wformat-security -o measure.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 liblow
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -fpreprocessed measure.i -quiet -dumpbase
measure.c -mtune=generic -march=x86-64 -auxbase measure -version
-fstack-protector-strong -Wformat -Wformat-security -o measure.s
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 55ea8e2f6e6b46a828851b4b8f05801c
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 as -v -I liblow --64 -o measure.o measure.s
GNU assembler version 2.26.1 (x86_64-linux-gnu) using BFD version (GNU Binutils
for Ubuntu) 2.26.1
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -E -quiet -v -I liblow -imultiarch
x86_64-linux-gnu -D UUT=crypto_scalarmult_bench scalarmult_noladderstep.c
-mtune=generic -march=x86-64 -fpch-preprocess -fstack-protector-strong -Wformat
-Wformat-security -o scalarmult_noladderstep.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 liblow
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -fpreprocessed scalarmult_noladderstep.i
-quiet -dumpbase scalarmult_noladderstep.c -mtune=generic -march=x86-64
-auxbase scalarmult_noladderstep -version -fstack-protector-strong -Wformat
-Wformat-security -o scalarmult_noladderstep.s
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 55ea8e2f6e6b46a828851b4b8f05801c
scalarmult_noladderstep.c:97:1: warning: always_inline function might not be
inlinable [-Wattributes]
 fmul(felem output, const felem in2, const felem in) {
 ^~~~
In file included from scalarmult_noladderstep.c:32:0:
femul.h:6:37: warning: always_inline function might not be inlinable
[-Wattributes]
 void force_inline femul(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t
x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17,
uint64_t x15, uint64_t x13);
                                     ^~~~~
scalarmult_noladderstep.c: In function ‘fmul’:
femul.h:6:37: error: inlining failed in call to always_inline ‘femul’: function
body not available
scalarmult_noladderstep.c:99:3: note: called from here
   femul(out,
   ^~~~~~~~~~
       in2[4], in2[3], in2[2], in2[1], in2[0],
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       in[4], in[3], in[2], in[1], in[0]);
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -E -quiet -v -I liblow -imultiarch
x86_64-linux-gnu -D UUT=crypto_scalarmult_bench femul_scheduled.c
-mtune=generic -march=x86-64 -fpch-preprocess -fstack-protector-strong -Wformat
-Wformat-security -o femul_scheduled.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 liblow
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'measure' '-I' 'liblow' '-D'
'UUT=crypto_scalarmult_bench' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -fpreprocessed femul_scheduled.i -quiet
-dumpbase femul_scheduled.c -mtune=generic -march=x86-64 -auxbase
femul_scheduled -version -fstack-protector-strong -Wformat -Wformat-security -o
femul_scheduled.s
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C11 (Ubuntu 7.2.0-1ubuntu1~16.04) version 7.2.0 (x86_64-linux-gnu)
        compiled by GNU C version 7.2.0, GMP version 6.1.0, MPFR version 3.1.4,
MPC version 1.0.3, isl version isl-0.16.1-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 55ea8e2f6e6b46a828851b4b8f05801c
femul_scheduled.c:19:37: warning: always_inline function might not be inlinable
[-Wattributes]
 void force_inline femul(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t
x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17,
uint64_t x15, uint64_t x13) {
                                     ^~~~~
femul_scheduled.c: In function ‘femul’:
femul_scheduled.c:24:1: error: ‘asm’ operand has impossible constraints
 asm (
 ^~~



What I expect:
I expect gcc to successfully generate code for my inline assembly that saves
either rbp or rsp (whichever one it's not using for stack memory addresses),
and then restores it at the end, allowing compilation of assembly code with 15
registers and memory.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]