Phil,

I guess you wanted to remove the lines in the Awt2dLibraries.gmk?

Do you think it's worth it to rewrite these assignments as separate assignment and a condition?
Especially long ones with a lot of parentheses?
Like this one, instead of
if ((j = ((mlib_s32) ((mlib_addr) psrc_row & 4) >> 2))) {

j = (mlib_s32) ((mlib_addr) psrc_row & 4) >> 2;
if (j != 0) {

Also seeing macro calls without a semicolon is weird.
I don't see any need in parentheses in the definition of FREE_AND_RETURN_STATUS so maybe it's possible to rewrite it without trailing semicolon?

Thanks,
Vadim

On 29.07.2016 2:31, Philip Race wrote:
Bug: https://bugs.openjdk.java.net/browse/JDK-8074843
Fix: http://cr.openjdk.java.net/~prr/8074843/

Here's a sampling of the warnings that I think covers most, maybe all, of the cases
LINUX
mlib_ImageAffine_NN_Bit.c:87:81: error: suggest parentheses around '-' in operand of '&' [-Werror=parentheses] res = (res & ~(1 << bit)) | (((srcPixelPtr[X >> (MLIB_SHIFT + 3)] >> (7 - (X >> MLIB_SHIFT) & 7)) & 1) <<
^
mlib_ImageAffine_NN_Bit.c:153:81: error: suggest parentheses around '-' in operand of '&' [-Werror=parentheses] res = (res & ~(1 << bit)) | (((srcPixelPtr[X >> (MLIB_SHIFT + 3)] >> (7 - (X >> MLIB_SHIFT) & 7)) & 1) << bit);

-----------------
mlib_c_ImageCopy.c: In function 'mlib_c_ImageCopy_s16':
mlib_c_ImageCopy.c:439:5: error: suggest parentheses around assignment used as truth value [-Werror=parentheses]
     STRIP(pdst, psrc, src_width, src_height, mlib_u16);
     ^
-
MAC ...

mlib_c_ImageCopy.c:331:5: error: using the result of an assignment as a condition without parentheses [-Werror,-Wparentheses]
    STRIP(pdst, psrc, src_width, src_height, mlib_u8);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mlib_c_ImageCopy.c:185:11: note: expanded from macro 'STRIP'
    if (j = w & 1)                                              \
        ~~^~~~~~~
mlib_c_ImageCopy.c:331:5: note: place parentheses around the assignment to silence this warning\

---


---
SOLARIS
mlib_ImageConv_16ext.c", line 532: statement not reached (E_STATEMENT_NOT_REACHED)

This last one was not nice just the ";" was considered a statement
after the {XX; YY; return Z} macro expansion
and turning into "do { {....} } while (0)" did not  help since
then it said "loop terminator not reached - other cases we have
like this have at least a condition in the macro.

-phil.

Reply via email to