PATCH: Do not align labels for jump tables

Maxim Kuvyrkov maxim@codesourcery.com
Sun May 24 15:48:00 GMT 2009


Mark Mitchell wrote:
> Andreas Schwab wrote:
> 
>>> The only change since that point was to add a condition to the
>>> testcase to make it pass on 68K/fido; those CPUs do not support
>>> -falign-labels=8.

>> In which way do they not support it?

I've amended the testcase because of the following in m68k.c: 
override_options():

#ifndef ASM_OUTPUT_ALIGN_WITH_NOP
   if (align_labels > 2)
     {
       warning (0, "-falign-labels=%d is not supported", align_labels);
       align_labels = 0;
     }
   if (align_loops > 2)
     {
       warning (0, "-falign-loops=%d is not supported", align_loops);
       align_loops = 0;
     }
#endif

ASM_OUTPUT_ALIGN_WITH_NOP is defined in linux.h, so bare-metal m68k and 
fido issue a warning.

Now comes the interesting part: I've just checked the commit log of 
revision that added the code above, and it appears that definition of 
the macro was intended to go to m68k.h, not linux.h (rev. 128730):

  2007-09-24  Roman Zippel <zippel@linux-m68k.org>

+       * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
+       "move.l %a4,%a4" to produce nops.
+       * config/m68k/m68k.c (override_options): Reset align options,
+       if neccessary align macro isn't avaible.

Roman, have you accidentally committed the hunk to the wrong file?

The definition of ASM_OUTPUT_ALIGN_WITH_NOP seems OK to me to be moved 
to m68k.h hence fixing the underlying problem.

Mark, it seems I was deceived by the code and the falign-labels-1.c 
testcase should not exclude m68k and fido from the testing.

--
Maxim



More information about the Gcc-patches mailing list