This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH ARM]: PR67745: Fix function alignment after __attribute__ 2/2




On 10/07/2015 07:50 PM, Bernd Schmidt wrote:
On 10/07/2015 07:37 PM, Bernd Schmidt wrote:
On 10/07/2015 12:45 PM, Christian Bruel wrote:

On 10/07/2015 12:18 PM, Bernd Schmidt wrote:
On 10/07/2015 09:04 AM, Christian Bruel wrote:
+      /* Similarly, relayout function's alignment if not forced.  */
+      if (!DECL_USER_ALIGN (fndecl)
+          && (TREE_CODE (fntype) != METHOD_TYPE
+          || TARGET_PTRMEMFUNC_VBIT_LOCATION !=
ptrmemfunc_vbit_in_pfn))
+        DECL_ALIGN (fndecl) = FUNCTION_BOUNDARY;
        }

Hmm, more questions are coming to mind - are other places that set
DECL_ALIGN for functions redundant after this change? It looks like the
main place where it's set is make_node_stat where it's also set to
FUNCTION_BOUNDARY. That's small enough not to bother changing it,

Yes it is. I thought about poisoning it but make_node_stat is used for synthesized functions as well and we need to keep the default correct.

but it
raises another issue: we don't allocate a struct function for mere
declarations, so does that mean they can have an incorrect DECL_ALIGN?


Probably at the time of start_decl, because DECL_ALIGN will have the boundary given by the global target_flags at that time. But this shouldn't be a problem since what matters is the DECL_ALIGN recomputed with the definition when there is something to layout.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]