Sometimes, even on AVR there is the need to align data.
However, alignments of 2 are ignored at the moment because of
#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
do { \
if ((POWER) 1)\
fprintf (STREAM, \t.p2align\t%d\n, POWER); \
} while (0)
The fix is to use POWER 0 instead.
Maybe someone knows why the restriction to POWER = 2 is
there at all?
Ok to install?
Johann
PR target/53448
* config/avr/avr.h (ASM_OUTPUT_ALIGN): Don't inhibit .p2align 1.
* config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Use
ASM_OUTPUT_ALIGN.
Index: config/avr/elf.h
===
--- config/avr/elf.h (revision 187704)
+++ config/avr/elf.h (working copy)
@@ -35,7 +35,7 @@
/* Output alignment 2**1 for jump tables. */
#undef ASM_OUTPUT_BEFORE_CASE_LABEL
#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE) \
- fprintf (FILE, \t.p2align\t1\n);
+ ASM_OUTPUT_ALIGN (FILE, 1);
/* Be conservative in crtstuff.c. */
#undef INIT_SECTION_ASM_OP
Index: config/avr/avr.h
===
--- config/avr/avr.h (revision 187704)
+++ config/avr/avr.h (working copy)
@@ -557,10 +557,10 @@ typedef struct avr_args {
#define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE) \
avr_output_addr_vec_elt(STREAM, VALUE)
-#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
- do { \
- if ((POWER) 1) \
- fprintf (STREAM, \t.p2align\t%d\n, POWER); \
+#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
+ do { \
+if ((POWER) 0)\
+ fprintf (STREAM, \t.p2align\t%d\n, POWER); \
} while (0)
#define CASE_VECTOR_MODE HImode