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

            Bug ID: 63963
           Summary: [5 Regression] LTO doesn't work with
                    __attribute__((__target__("sse4.2")))
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com

On Linux/x86-64, r217664 gave

extern const uchar * search_line_sse42 (const uchar *s, const uchar *end);
int
main (int argc, char **argv)
{
  return search_line_sse42 (argv[0], argv[0]) != 0;
}
[hjl@gnu-6 gcc]$ cat /tmp/lex.c 
#include <stdint.h>
#include <x86intrin.h>

typedef unsigned char uchar;

const uchar *
__attribute__((__target__("sse4.2")))
search_line_sse42 (const uchar *s, const uchar *end)
{
  typedef char v16qi __attribute__ ((__vector_size__ (16)));
  static const v16qi search = { '\n', '\r', '?', '\\' };
  uintptr_t si = (uintptr_t)s;
  uintptr_t index;
  v16qi sv;
  sv = __builtin_ia32_loaddqu ((const char *) s);
  index = __builtin_ia32_pcmpestri128 (search, 4, sv, 16, 0);
  return s + index;
}
[hjl@gnu-6 gcc]$ ./xgcc -B./ -O2 -flto -c /tmp/x.c
[hjl@gnu-6 gcc]$ ./xgcc -B./ -O2 -flto x.o lex.o    
/tmp/lex.c: In function \u2018main\u2019:
/tmp/lex.c:16:11: error: \u2018__builtin_ia32_pcmpestri128\u2019 needs isa
option -m32 -msse4.2
   index = __builtin_ia32_pcmpestri128 (search, 4, sv, 16, 0);
           ^
lto-wrapper: fatal error: ./xgcc returned 1 exit status
compilation terminated.
/usr/local/bin/ld: lto-wrapper failed
collect2: error: ld returned 1 exit status
[hjl@gnu-6 gcc]$

Reply via email to