Bug #8947 Intel icc 8.1 EM64T compile problems - mi_search.c and inlining
Submitted: 4 Mar 2005 14:24 Modified: 6 May 2005 11:57
Reporter: Kent Boortz Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:4.0.24-pre OS:Linux (Red Hat Advanced Server 3 x86_64)
Assigned to: Lenz Grimmer CPU Architecture:Any

[4 Mar 2005 14:24] Kent Boortz
Description:
% icc -V
Intel(R) C Compiler for Intel(R) EM64T-based applications, Version 8.1    Build 20050203 Package ID: l_cce_pc_8.1.025

% uname -a
Linux nocona.mysql.com 2.4.21-15.EL #1 Thu Apr 22 00:20:14 EDT 2004 x86_64 x86_64 x86_64 GNU/Linux

Compiling the attached stand alone C file attached fails with "-ip" optimization.
The error message is

  /tmp/icce5bcUSas_: Assembler messages:
  /tmp/icce5bcUSas_:1320: Error: suffix or operands invalid for `cmp'

Looks like an optimizer bug. Rearrang/removing things in this part of the source

      {
        uint length=keyseg->length;
        if (piks &&
            (flag=compare_bin(a,length,b,length,
                              (my_bool) ((nextflag & SEARCH_PREFIX) &&
                                         next_key_length <= 0))))
          return ((keyseg->flag & HA_REVERSE_SORT) ? -flag : flag);
        a+=length;
        b+=length;
      }

will affect if the compile fails or not. But no clear pattern to me.

How to repeat:
Download the attached C source and compile using

 % icc -ip -c mi_search.E.c

It will compile using

 % icc -ip -ip_no_inlining -c mi_search.E.c
[4 Mar 2005 14:31] Kent Boortz
Preprocessed and compressed mi_search.c

Attachment: mi_search.E.c.gz (application/x-gzip, text), 45.63 KiB.

[4 Mar 2005 15:28] Kent Boortz
Forgot some details about the environment

LD_LIBRARY_PATH=/opt/intel_cce_80/lib
PATH=/home/mysqldev/nocona-icc-glibc23/bin:/opt/intel_cce_80/bin:/usr/local/bin:/bin:/usr/bin
[11 Apr 2005 17:06] Lenz Grimmer
Still seems to happen with the latest update:

[lgrimmer@nocona lgrimmer]$ icc -V
Intel(R) C Compiler for Intel(R) EM64T-based applications, Version 8.1    Build 20050316 Package ID: l_cce_pc_8.1.026
Copyright (C) 1985-2005 Intel Corporation.  All rights reserved.
[lgrimmer@nocona lgrimmer]$ icc -ip -c mi_search.E.c
/tmp/icc9sVTT9as_: Assembler messages:
/tmp/icc9sVTT9as_:1320: Error: suffix or operands invalid for `cmp'
[6 May 2005 11:57] Lenz Grimmer
Compiling MySQL on EM64T works fine with ICC 8.1 l_cce_pc_8.1.027 - closing this one for now.