On Mon, Jul 23, 2018 at 2:24 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Mon, Jun 18, 2018 at 12:26 PM, Joseph Myers <jos...@codesourcery.com> > wrote: >> On Mon, 18 Jun 2018, Jason Merrill wrote: >> >>> On Mon, Jun 18, 2018 at 11:59 AM, Joseph Myers <jos...@codesourcery.com> >>> wrote: >>> > On Mon, 18 Jun 2018, Jason Merrill wrote: >>> > >>> >> > + if (TREE_CODE (rhs) == COND_EXPR) >>> >> > + { >>> >> > + /* Check the THEN path first. */ >>> >> > + tree op1 = TREE_OPERAND (rhs, 1); >>> >> > + context = check_address_of_packed_member (type, op1); >>> >> >>> >> This should handle the GNU extension of re-using operand 0 if operand >>> >> 1 is omitted. >>> > >>> > Doesn't that just use a SAVE_EXPR? >>> >>> Hmm, I suppose it does, but many places in the compiler seem to expect >>> that it produces a COND_EXPR with TREE_OPERAND 1 as NULL_TREE. >> >> Maybe that's used somewhere inside the C++ front end. For C a SAVE_EXPR >> is produced directly. >> > > Here is the updated patch. Changes from the last one: > > 1. Handle COMPOUND_EXPR. > 2. Fixed typos in comments. > 3. Combined warn_for_pointer_of_packed_member and > warn_for_address_of_packed_member into > warn_for_address_or_pointer_of_packed_member. > > Tested on Linux/x86-64 and Linux/i686. OK for trunk. >
PING^1. -- H.J.