Hello! During libjava build, following warning is reported:
../../../gcc-svn/branches/gcc-4_8-branch/libjava/java/lang/natObject.cc:932:27: warning: suggest parentheses around comparison in operand of '|' [-Wparentheses] JvAssert(he -> address == address | LOCKED ); ^ It looks that parentheses are missing around (address | LOCKED), otherwise the expression is always true - LOCKED is unconditionally defined to 1. Attached patch adds these parentheses (and removes a pair of superfluous ones). 2014-03-10 Uros Bizjak <ubiz...@gmail.com> * java/lang/natObject.cc (_Jv_MonitorEnter): Add missing parenthesis around comparison with (address | LOCKED) in JvAssert. Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}. OK for mainline SVN and release branches? Uros.
Index: java/lang/natObject.cc =================================================================== --- java/lang/natObject.cc (revision 208455) +++ java/lang/natObject.cc (working copy) @@ -929,7 +929,7 @@ retry: // only be held by other threads waiting for conversion, and // they, like us, drop it quickly without blocking. _Jv_MutexLock(&(hl->si.mutex)); - JvAssert(he -> address == address | LOCKED ); + JvAssert(he -> address == (address | LOCKED)); release_set(&(he -> address), (address | REQUEST_CONVERSION | HEAVY)); // release lock on he LOG(REQ_CONV, (address | REQUEST_CONVERSION | HEAVY), self); @@ -961,7 +961,7 @@ retry: } obj_addr_t was_heavy = (address & HEAVY); if ((address & LOCKED) || - !compare_and_swap(&(he -> address), address, (address | LOCKED ))) + !compare_and_swap(&(he -> address), address, address | LOCKED )) { wait_unlocked(he); goto retry;