Commit 14d52b90 by David Edelsohn Committed by David Edelsohn

xcoff.h (ASM_OUTPUT_ALIGNED_COMMON): Use floor_log2.

        * config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_COMMON): Use floor_log2.
        (ASM_OUTPUT_ALIGNED_LOCAL): New.

From-SVN: r195660
parent bed8d8a6
2013-02-01 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/xcoff.h (ASM_OUTPUT_ALIGNED_COMMON): Use floor_log2.
(ASM_OUTPUT_ALIGNED_LOCAL): New.
2013-02-01 Richard Biener <rguenther@suse.de> 2013-02-01 Richard Biener <rguenther@suse.de>
PR tree-optimization/56113 PR tree-optimization/56113
......
...@@ -283,7 +283,7 @@ ...@@ -283,7 +283,7 @@
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \ RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
if ((ALIGN) > 32) \ if ((ALIGN) > 32) \
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), \ fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), \
exact_log2 ((ALIGN) / BITS_PER_UNIT)); \ floor_log2 ((ALIGN) / BITS_PER_UNIT)); \
else if ((SIZE) > 4) \ else if ((SIZE) > 4) \
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",3\n", (SIZE)); \ fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",3\n", (SIZE)); \
else \ else \
...@@ -292,12 +292,30 @@ ...@@ -292,12 +292,30 @@
/* This says how to output an assembler line /* This says how to output an assembler line
to define a local common symbol. to define a local common symbol.
Alignment cannot be specified, but we can try to maintain The assembler in AIX 6.1 and later supports an alignment argument.
For earlier releases of AIX, we try to maintain
alignment after preceding TOC section if it was aligned alignment after preceding TOC section if it was aligned
for 64-bit mode. */ for 64-bit mode. */
#define LOCAL_COMMON_ASM_OP "\t.lcomm " #define LOCAL_COMMON_ASM_OP "\t.lcomm "
#if TARGET_AIX_VERSION >= 61
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
do { fputs (LOCAL_COMMON_ASM_OP, (FILE)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
if ((ALIGN) > 32) \
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%s,%u\n", \
(SIZE), xcoff_bss_section_name, \
floor_log2 ((ALIGN) / BITS_PER_UNIT)); \
else if ((SIZE) > 4) \
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%s,3\n", \
(SIZE), xcoff_bss_section_name); \
else \
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%s\n", \
(SIZE), xcoff_bss_section_name); \
} while (0)
#endif
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \ #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
do { fputs (LOCAL_COMMON_ASM_OP, (FILE)); \ do { fputs (LOCAL_COMMON_ASM_OP, (FILE)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \ RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment