Bug #58629 UNIV_MUST_NOT_INLINE unnecessarily defined?
Submitted: 1 Dec 2010 11:37 Modified: 10 Feb 2011 14:28
Reporter: Marko Mäkelä Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:all OS:Any
Assigned to: Kevin Lewis CPU Architecture:Any

[1 Dec 2010 11:37] Marko Mäkelä
Description:
The InnoDB source code is structured so that the function definitions are split into .ic and .c files and the declarations are in .h files. If UNIV_MUST_NOT_INLINE is defined, the .ic files will be included by the corresponding .c files. Otherwise, the .ic files will be included by the .h files, and the calls to the functions can be inlined by the compiler.

For some reason, storage/innobase/include/univ.i defines UNIV_MUST_NOT_INLINE on all platforms except GCC (or compilers that define __GNUC__) and Sun CC.

How to repeat:
Read storage/innobase/include/univ.i and the build scripts.

Suggested fix:
Provisionally remove the definition of UNIV_MUST_NOT_INLINE. Remove it on all platforms where all tests pass.
[1 Dec 2010 13:16] MySQL Verification Team
Thank you for the bug report.
[9 Dec 2010 17:29] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/126469

3373 kevin.lewis@oracle.com	2010-12-09
      Bug#58629 - Do not define UNIV_MUST_NOT_INLINE on any platform and try it out on pushbuild
[22 Dec 2010 21:31] Bugs System
Pushed into mysql-trunk 5.6.1 (revid:alexander.nozdrin@oracle.com-20101222212842-y0t3ibtd32wd9qaw) (version source revid:alexander.nozdrin@oracle.com-20101222212842-y0t3ibtd32wd9qaw) (merge vers: 5.6.1) (pib:24)
[5 Jan 2011 15:18] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/127984

3403 kevin.lewis@oracle.com	2011-01-05
      Bug#58629 - Undefine UNIV_MUST_NOT_INLINE from normal builds
      so that inlining can occur on all operating systems.
[8 Jan 2011 15:08] Bugs System
Pushed into mysql-trunk 5.6.2 (revid:vasil.dimov@oracle.com-20110108150732-8qygun7nuaqf9d3u) (version source revid:vasil.dimov@oracle.com-20110108150646-44c9j7ck64ocey31) (merge vers: 5.6.2) (pib:24)
[14 Jan 2011 17:30] Kevin Lewis
The changeset that was previously pushed was also reverted by a following changeset.  A newer patch is pending in Review Board://538 which fixes the previous compilation problem on Windows.  It is not yet committed or pushed.
[21 Jan 2011 16:15] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/129358
[30 Jan 2011 17:00] Bugs System
Pushed into mysql-trunk 5.6.2 (revid:vasil.dimov@oracle.com-20110130165639-1pr3opz839b98q5j) (version source revid:vasil.dimov@oracle.com-20110130165522-m0o6al0pn5ig9kv3) (merge vers: 5.6.2) (pib:24)
[7 Feb 2011 19:06] Kevin Lewis
Pushed to mysql-trunk-innodb on 1/21/2011. Approved by Marko in RB://538