On 06/04/2014 06:20 AM, Richard Biener wrote:
On Tue, 3 Jun 2014, Richard Sandiford wrote:
Richi suggested just changing the alignment at output time. I assume
that would be a case of replacing the DECL_ALIGN in:
/* Tell assembler to move to target machine's alignment for functions. */
align = floor_log2 (DECL_ALIGN (decl) / BITS_PER_UNIT);
if (align > 0)
{
ASM_OUTPUT_ALIGN (asm_out_file, align);
}
with a hook. (Is that right?)
Yeah, kind of. Of course if DECL_ALIGN on function-decls is "unused"
then we may as well initialize it to 1 in tree.c and at an appropriate
stage adjust it to the result of a target hook invocation.
Appropriate stage would be the above place (which means DECL_ALIGN
is essentially "unused" for FUNCTION_DECLs).
So ... can you massage the DECL_ALIGN macro to ICE on FUNCTION_DECLs
and see where we access it? (generic code will possibly trip on it,
but the question is is there any user that cares?)
Well, offhand, I know that one of the places is in
handle_aligned_attribute, in c-common/c-common.c, where we handle
user-specified alignment attributes. Here we are potentially both
reading and writing the DECL_ALIGN field of a FUNCTION_DECL.
-Sandra