diff options
author | Tristan Gingold <gingold@adacore.com> | 2012-03-30 13:25:45 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@gcc.gnu.org> | 2012-03-30 13:25:45 +0000 |
commit | fe5798c059f2ed1cf87abb0bc38b8ad376f2b7d6 (patch) | |
tree | 839b8906b87722f583c3862de1fc95096c4c0214 /gcc | |
parent | 5cc553023d518c014d264dc8e860078425bc9158 (diff) | |
download | gcc-fe5798c059f2ed1cf87abb0bc38b8ad376f2b7d6.tar.gz |
ia64.c (ia64_section_type_flags): Remove common_object attribute handling.
2012-03-30 Tristan Gingold <gingold@adacore.com>
* config/ia64/ia64.c (ia64_section_type_flags): Remove
common_object attribute handling.
(SECTION_VMS_OVERLAY): Remove
(ia64_vms_common_object_attribute): Replace abort with an assert.
Do not set DECL_SECTION_NAME.
(ia64_vms_output_aligned_decl_common): Handle common_object
attribute.
(ia64_vms_elf_asm_named_section): Remove.
* config/ia64/vms.h (TARGET_ASM_NAMED_SECTION): Remove.
From-SVN: r186010
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 80 | ||||
-rw-r--r-- | gcc/config/ia64/vms.h | 3 |
3 files changed, 35 insertions, 60 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d461d546e10..2afe362ef98 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2012-03-30 Tristan Gingold <gingold@adacore.com> + + * config/ia64/ia64.c (ia64_section_type_flags): Remove + common_object attribute handling. + (SECTION_VMS_OVERLAY): Remove + (ia64_vms_common_object_attribute): Replace abort with an assert. + Do not set DECL_SECTION_NAME. + (ia64_vms_output_aligned_decl_common): Handle common_object + attribute. + (ia64_vms_elf_asm_named_section): Remove. + * config/ia64/vms.h (TARGET_ASM_NAMED_SECTION): Remove. + 2012-03-30 Richard Guenther <rguenther@suse.de> PR middle-end/52786 diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 98a6120c975..4b8a6929b1e 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -740,9 +740,6 @@ ia64_handle_model_attribute (tree *node, tree name, tree args, return NULL_TREE; } -/* The section must have global and overlaid attributes. */ -#define SECTION_VMS_OVERLAY SECTION_MACH_DEP - /* Part of the low level implementation of DEC Ada pragma Common_Object which enables the shared use of variables stored in overlaid linker areas corresponding to the use of Fortran COMMON. */ @@ -753,24 +750,18 @@ ia64_vms_common_object_attribute (tree *node, tree name, tree args, bool *no_add_attrs) { tree decl = *node; - tree id, val; - if (! DECL_P (decl)) - abort (); + tree id; + + gcc_assert (DECL_P (decl)); DECL_COMMON (decl) = 1; id = TREE_VALUE (args); - if (TREE_CODE (id) == IDENTIFIER_NODE) - val = build_string (IDENTIFIER_LENGTH (id), IDENTIFIER_POINTER (id)); - else if (TREE_CODE (id) == STRING_CST) - val = id; - else + if (TREE_CODE (id) != IDENTIFIER_NODE && TREE_CODE (id) != STRING_CST) { - warning (OPT_Wattributes, - "%qE attribute requires a string constant argument", name); + error ("%qE attribute requires a string constant argument", name); *no_add_attrs = true; return NULL_TREE; } - DECL_SECTION_NAME (decl) = val; return NULL_TREE; } @@ -783,50 +774,31 @@ ia64_vms_output_aligned_decl_common (FILE *file, tree decl, const char *name, { tree attr = DECL_ATTRIBUTES (decl); - /* As common_object attribute set DECL_SECTION_NAME check it before - looking up the attribute. */ - if (DECL_SECTION_NAME (decl) && attr) + if (attr) attr = lookup_attribute ("common_object", attr); - else - attr = NULL_TREE; - - if (!attr) - { - /* Code from elfos.h. */ - fprintf (file, "%s", COMMON_ASM_OP); - assemble_name (file, name); - fprintf (file, ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", - size, align / BITS_PER_UNIT); - } - else + if (attr) { - ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT)); - ASM_OUTPUT_LABEL (file, name); - ASM_OUTPUT_SKIP (file, size ? size : 1); - } -} + tree id = TREE_VALUE (TREE_VALUE (attr)); + const char *name; -/* Definition of TARGET_ASM_NAMED_SECTION for VMS. */ + if (TREE_CODE (id) == IDENTIFIER_NODE) + name = IDENTIFIER_POINTER (id); + else if (TREE_CODE (id) == STRING_CST) + name = TREE_STRING_POINTER (id); + else + abort (); -void -ia64_vms_elf_asm_named_section (const char *name, unsigned int flags, - tree decl) -{ - if (!(flags & SECTION_VMS_OVERLAY)) - { - default_elf_asm_named_section (name, flags, decl); - return; + fprintf (file, "\t.vms_common\t\"%s\",", name); } - if (flags != (SECTION_VMS_OVERLAY | SECTION_WRITE)) - abort (); + else + fprintf (file, "%s", COMMON_ASM_OP); - if (flags & SECTION_DECLARED) - { - fprintf (asm_out_file, "\t.section\t%s\n", name); - return; - } + /* Code from elfos.h. */ + assemble_name (file, name); + fprintf (file, ","HOST_WIDE_INT_PRINT_UNSIGNED",%u", + size, align / BITS_PER_UNIT); - fprintf (asm_out_file, "\t.section\t%s,\"awgO\"\n", name); + fputc ('\n', file); } static void @@ -10536,12 +10508,6 @@ ia64_section_type_flags (tree decl, const char *name, int reloc) || strncmp (name, ".gnu.linkonce.sb.", 17) == 0) flags = SECTION_SMALL; -#if TARGET_ABI_OPEN_VMS - if (decl && DECL_ATTRIBUTES (decl) - && lookup_attribute ("common_object", DECL_ATTRIBUTES (decl))) - flags |= SECTION_VMS_OVERLAY; -#endif - flags |= default_section_type_flags (decl, name, reloc); return flags; } diff --git a/gcc/config/ia64/vms.h b/gcc/config/ia64/vms.h index 11f017663b5..3e81d769897 100644 --- a/gcc/config/ia64/vms.h +++ b/gcc/config/ia64/vms.h @@ -121,9 +121,6 @@ STATIC func_ptr __CTOR_LIST__[1] \ #undef TARGET_VALID_POINTER_MODE #define TARGET_VALID_POINTER_MODE ia64_vms_valid_pointer_mode -#undef TARGET_ASM_NAMED_SECTION -#define TARGET_ASM_NAMED_SECTION ia64_vms_elf_asm_named_section - /* Define this macro if it is advisable to hold scalars in registers in a wider mode than that declared by the program. In such cases, the value is constrained to be within the bounds of the declared |