[Bug c/84310] -falign-{labels,loops,jumps} with value >= 32768+1 cause a segfault
marxin at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 12 09:34:00 GMT 2018
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},
...
More information about the Gcc-bugs
mailing list