https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84310

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #1)
> It should also be a power of 2, shouldn't it?  Aligning anything to 4097
> bytes is just weird.

No, if you provide a value different from a power of 2 (let's say N), then it
means that you want to align to first higher power of two and you allow at
maximum N-1 bytes in padding.

It's commonly used in i386.c:

/* Processor target table, indexed by processor number */
struct ptt
{
  const char *const name;                       /* processor name  */
  const struct processor_costs *cost;           /* Processor costs */
  const int align_loop;                         /* Default alignments.  */
  const int align_loop_max_skip;
  const int align_jump;
  const int align_jump_max_skip;
  const int align_func;
};

/* This table must be in sync with enum processor_type in i386.h.  */ 
static const struct ptt processor_target_table[PROCESSOR_max] =
{
  {"generic", &generic_cost, 16, 10, 16, 10, 16}, <--- here
  {"i386", &i386_cost, 4, 3, 4, 3, 4},
  {"i486", &i486_cost, 16, 15, 16, 15, 16},
...

Reply via email to