* pa.c (pa_asm_output_aligned_common): Warn if specified alignment
exceeds maximum alignment for global common data.
* pa64-hpux.h (MAX_OFILE_ALIGNMENT): Define to 32768.
* som.h (MAX_OFILE_ALIGNMENT): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93698
138bc75d-0d04-0410-961f-
82ee72b054a4
+2005-01-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR ada/19388
+ * pa.c (pa_asm_output_aligned_common): Warn if specified alignment
+ exceeds maximum alignment for global common data.
+ * pa64-hpux.h (MAX_OFILE_ALIGNMENT): Define to 32768.
+ * som.h (MAX_OFILE_ALIGNMENT): Likewise.
+
2004-01-15 Roger Sayle <roger@eyesopen.com>
* tree-ssa-dom.c (extract_range_from_cond): Correct condition.
unsigned HOST_WIDE_INT size,
unsigned int align)
{
+ unsigned int max_common_align;
+
+ max_common_align = TARGET_64BIT ? 128 : (size >= 4096 ? 256 : 64);
+ if (align > max_common_align)
+ {
+ warning ("alignment (%u) for %s exceeds maximum alignment "
+ "for global common data. Using %u",
+ align / BITS_PER_UNIT, name, max_common_align / BITS_PER_UNIT);
+ align = max_common_align;
+ }
+
bss_section ();
assemble_name (stream, name);
The .align directive in the HP assembler allows alignments up to
4096 bytes. However, the maximum alignment of a global common symbol
- is 16 bytes using HP ld. For consistency, we use the same limit
- with GNU ld. */
+ is 16 bytes using HP ld. Unfortunately, this macro doesn't provide
+ a method to check for common symbols. */
#undef MAX_OFILE_ALIGNMENT
-#define MAX_OFILE_ALIGNMENT \
- (TREE_PUBLIC (decl) && DECL_COMMON (decl) ? 128 : 32768)
+#define MAX_OFILE_ALIGNMENT 32768
/* Due to limitations in the target structure, it isn't currently possible
to dynamically switch between the GNU and HP assemblers. */
The .align directive in the HP assembler allows alignments up to 4096
bytes. However, the maximum alignment of a global common symbol is 8
bytes for objects smaller than the page size (4096 bytes). For larger
- objects, the linker provides an alignment of 32 bytes. */
-#define MAX_OFILE_ALIGNMENT \
- (TREE_PUBLIC (decl) && DECL_COMMON (decl) \
- ? (host_integerp (DECL_SIZE_UNIT (decl), 1) >= 4096 ? 256 : 64) \
- : 32768)
+ objects, the linker provides an alignment of 32 bytes. Unfortunately,
+ this macro doesn't provide a mechanism to test for common symbols. */
+#define MAX_OFILE_ALIGNMENT 32768
/* The SOM linker hardcodes paths into binaries. As a result, dotdots
must be removed from library prefixes to prevent binaries from depending