[Bug target/56133] New: [x86] align_loops, align_jumps and align_functions are ignored

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Jan 28 21:56:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56133

             Bug #: 56133
           Summary: [x86] align_loops, align_jumps and align_functions
                    are ignored
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: hjl.tools@gmail.com


i386.c has

  /* Default align_* from the processor table.  */
  if (align_loops == 0)
    {
      align_loops = processor_target_table[ix86_tune].align_loop;
      align_loops_max_skip =
processor_target_table[ix86_tune].align_loop_max_skip;
    }
  if (align_jumps == 0)
    {
      align_jumps = processor_target_table[ix86_tune].align_jump;
      align_jumps_max_skip =
processor_target_table[ix86_tune].align_jump_max_skip;
    }
  if (align_functions == 0)
    {
      align_functions = processor_target_table[ix86_tune].align_func;
    }

However, opts.c has

    { OPT_LEVELS_2_PLUS, OPT_falign_loops, NULL, 1 },
    { OPT_LEVELS_2_PLUS, OPT_falign_jumps, NULL, 1 },
    { OPT_LEVELS_2_PLUS, OPT_falign_labels, NULL, 1 },
    { OPT_LEVELS_2_PLUS, OPT_falign_functions, NULL, 1 },


Those variables aren't zero unless they are set at command-line.  I think
they should be initialized to -1, which is handled by init_alignments:

/* Default the align_* variables to 1 if they're still unset, and
   set up the align_*_log variables.  */
static void 
init_alignments (void)
{

and i386.c should check <= 0, instead of == 0.



More information about the Gcc-bugs mailing list