Hi,

This is the 3rd version of the patch set. 
Compare to the 2nd version, the following are the major change:

  1. change the name of the option from -fstrict-flex-array to 
-fstrict-flex-arrays (per Kees' suggestion, this will be consistent with LLVM's 
option);
  2. -std=c89 and ISO C++ will disable all -fstrict-flex-arrays;
     -std=gnu89 and C++ with GNU extension will disable -fstrict-flex-arrays=3
     the attribute has the same impact.
     Issue warnings when the feature is disabled;
  3. add testing cases for these new changes;
  4. update documentation;
  5. delete the common untility routine flexible_array_member_p, 
zero_length_array_p, one_element_array_p from tree.[ch], and move them to 
c/c-decl.cc since they are C/C++ specific concepts, should not be exposed in 
middle end.
  6. not update component_ref_size routine in tree.cc, keep the original one;
  7. handle the new IR bit in LTO streamer in/out per Richard's request;
  8. handle the new IR bit in C++ modules per Richard's request with Nathan's 
help;
  9. Print the new IR bit; 
 10. update array_at_struct_end_p to check the new IR bit DECL_NOT_FLEXARRAY to 
still keep array_at_struct_end_p as the common utility in middle-end;

I have bootstrapped and regression tested on both aarch64 and x86, no issues.

Let me know if you have any comments on the patches.

thanks.

Qing

Reply via email to