From: Jon Olav Hauglid Date: October 3 2011 7:38am Subject: bzr push into mysql-5.5 branch (jon.hauglid:3561 to 3562) Bug#13030056 List-Archive: http://lists.mysql.com/commits/141272 X-Bug: 13030056 Message-Id: <201110030737.p937bqJL013470@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3562 Jon Olav Hauglid 2011-10-03 Bug#13030056 62533: UNITTEST/MYSYS/MY_ATOMIC-T.C DOES NOT COMPILE ON MACOSX LION The problem was that on optimized builds, the wrong code was generated for my_atomic_add64 if a variable argument was optimized away as a constant. This patch fixes the problem by making the variable volatile. Another workaround is to specify architecture explicitly using e.g. CFLAGS/CXXFLAGS= "-m64". No test case added. modified: unittest/mysys/my_atomic-t.c 3561 Bjorn Munch 2011-09-30 12956584 followup fix for mysqltest run_query_stmt() might use disable_xxx vars after calling handle_no_error But handle_no_error() hes reverted any ONCE settings Fix is to take revert_properties() out of handle_no_error() modified: client/mysqltest.cc === modified file 'unittest/mysys/my_atomic-t.c' --- a/unittest/mysys/my_atomic-t.c 2011-06-30 15:46:53 +0000 +++ b/unittest/mysys/my_atomic-t.c 2011-10-03 07:31:55 +0000 @@ -164,7 +164,14 @@ void do_tests() test_concurrently("my_atomic_cas32", test_atomic_cas, THREADS, CYCLES); { - int64 b=0x1000200030004000LL; + /* + If b is not volatile, the wrong assembly code is generated on OSX Lion + as the variable is optimized away as a constant. + See Bug#62533 / Bug#13030056. + Another workaround is to specify architecture explicitly using e.g. + CFLAGS/CXXFLAGS= "-m64". + */ + volatile int64 b=0x1000200030004000LL; a64=0; my_atomic_add64(&a64, b); ok(a64==b, "add64"); No bundle (reason: useless for push emails).