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: unassig...@gcc.gnu.org

        ReportedBy: hjl.to...@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.

Reply via email to