i386: Don't pass -msse2avx to assembler for -mavx

With

gcc -O2 -fPIC -flto -g -c -o a.o a.c
gcc -O2 -fPIC -flto -g -mavx   -c -o b.o b.c
gcc -shared -O2 -fPIC -flto -g -o lib1.so a.o b.o

LTO correctly generates AVX for b.o and SSE for a.o.  But the GCC driver
passes -msse2avx to assembler, which encodes SSE instructions as AVX
instructions.  We shouldn't pass -msse2avx to assembler for -mavx.

	Backport from mainline
	PR target/87522
	* config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to
	assembler for -mavx.
	* config/i386/gnu-user64.h (ASM_SPEC): Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@265090 138bc75d-0d04-0410-961f-82ee72b054a4
This commit is contained in:
hjl 2018-10-12 12:34:36 +00:00
parent 9597a94d75
commit db4caa1d54
3 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,13 @@
2018-10-12 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline
2018-10-05 H.J. Lu <hongjiu.lu@intel.com>
PR target/87522
* config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to
assembler for -mavx.
* config/i386/gnu-user64.h (ASM_SPEC): Likewise.
2018-09-19 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.md (atomic_storeqi): Restore deleted expander.

View File

@ -67,7 +67,7 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_SPEC
#define ASM_SPEC \
"--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
"--32 %{msse2avx:%{!mavx:-msse2avx}}"
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \

View File

@ -50,7 +50,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define ASM_SPEC "%{" SPEC_32 ":--32} \
%{" SPEC_64 ":--64} \
%{" SPEC_X32 ":--x32} \
%{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
%{msse2avx:%{!mavx:-msse2avx}}"
#define GNU_USER_TARGET_LINK_SPEC \
"%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \