On 12/19/18 12:35 PM, H.J. Lu wrote:
+ while (handled_component_p (rhs)) + { + if (TREE_CODE (rhs) == COMPONENT_REF) + break; + rhs = TREE_OPERAND (rhs, 0); + } + + if (TREE_CODE (rhs) != COMPONENT_REF) + return NULL_TREE; + + object = TREE_OPERAND (rhs, 0); + field = TREE_OPERAND (rhs, 1); + + tree context = check_alignment_of_packed_member (type, field); + if (context) + return context;
All the above looks unnecessary; it will be handled by the loop below.
+ /* Check alignment of the object. */ + while (handled_component_p (object)) + { + if (TREE_CODE (object) == COMPONENT_REF) + { + do + { + field = TREE_OPERAND (object, 1); + context = check_alignment_of_packed_member (type, field); + if (context) + return context; + object = TREE_OPERAND (object, 0); + } + while (TREE_CODE (object) == COMPONENT_REF);
This inner loop also seems unnecessary.
+ } + else + object = TREE_OPERAND (object, 0); + }
Jason