https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81743
Bug ID: 81743 Summary: int __attribute__ ((target("arch=westmere"))) is compiled incorrectly Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: ubizjak at gmail dot com Target Milestone: --- Target: x86 For g++.dg/ext/mv16.C, GCC generates: [hjl@gnu-tools-1 gcc]$ /export/build/gnu/gcc/build-x86_64-linux/gcc/testsuite/g++/../../xg++ -B/export/build/gnu/gcc/build-x86_64-linux/gcc/testsuite/g++/../../ /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/ext/mv16.C -fno-diagnostics-show-caret -fdiagnostics-color=never -nostdinc++ -I/export/build/gnu/gcc/build-x86_64-linux/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu -I/export/build/gnu/gcc/build-x86_64-linux/x86_64-pc-linux-gnu/libstdc++-v3/include -I/export/gnu/import/git/sources/gcc/libstdc++-v3/libsupc++ -I/export/gnu/import/git/sources/gcc/libstdc++-v3/include/backward -I/export/gnu/import/git/sources/gcc/libstdc++-v3/testsuite/util -fmessage-length=0 -std=gnu++14 -O2 -L/export/build/gnu/gcc/build-x86_64-linux/x86_64-pc-linux-gnu/./libstdc++-v3/src/.libs -B/export/build/gnu/gcc/build-x86_64-linux/x86_64-pc-linux-gnu/./libstdc++-v3/src/.libs -L/export/build/gnu/gcc/build-x86_64-linux/x86_64-pc-linux-gnu/./libstdc++-v3/src/.libs -B/export/build/gnu/gcc/build-x86_64-linux/x86_64-pc-linux-gnu/./libitm/ -L/export/build/gnu/gcc/build-x86_64-linux/x86_64-pc-linux-gnu/./libitm/.libs -S .type _Z3foov.resolver, @function _Z3foov.resolver: .LFB11: .cfi_startproc subq $8, %rsp .cfi_def_cfa_offset 16 call __cpu_indicator_init cmpl $13, __cpu_model+8(%rip) movl $_Z3foov.arch_haswell, %eax jne .L29 .L19: addq $8, %rsp .cfi_remember_state .cfi_def_cfa_offset 8 ret .p2align 4,,10 .p2align 3 .L29: .cfi_restore_state cmpl $14, __cpu_model+8(%rip) movl $_Z3foov.arch_broadwell, %eax je .L19 cmpl $15, __cpu_model+8(%rip) movl $_Z3foov.arch_skylake, %eax je .L19 cmpl $16, __cpu_model+8(%rip) movl $_Z3foov.arch_skylake_avx512, %eax je .L19 cmpl $3, __cpu_model+8(%rip) movl $_Z3foov.arch_sandybridge, %eax je .L19 cmpl $12, __cpu_model+8(%rip) movl $_Z3foov.arch_ivybridge, %eax je .L19 cmpl $3, __cpu_model+4(%rip) movl $_Z3foov.arch_nehalem, %eax je .L19 <<<<<<<<< This is wrong. Nehalem and Westmere have the same CPU type. cmpl $2, __cpu_model+8(%rip) movl $_Z3foov, %eax movl $_Z3foov.arch_westmere, %edx cmove %rdx, %rax jmp .L19 .cfi_endproc .LFE11: .size _Z3foov.resolver, .-_Z3foov.resolver