Commit fe5798c0 by Tristan Gingold Committed by Tristan Gingold

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
parent 5cc55302
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> 2012-03-30 Richard Guenther <rguenther@suse.de>
PR middle-end/52786 PR middle-end/52786
......
...@@ -740,9 +740,6 @@ ia64_handle_model_attribute (tree *node, tree name, tree args, ...@@ -740,9 +740,6 @@ ia64_handle_model_attribute (tree *node, tree name, tree args,
return NULL_TREE; 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 /* Part of the low level implementation of DEC Ada pragma Common_Object which
enables the shared use of variables stored in overlaid linker areas enables the shared use of variables stored in overlaid linker areas
corresponding to the use of Fortran COMMON. */ corresponding to the use of Fortran COMMON. */
...@@ -753,24 +750,18 @@ ia64_vms_common_object_attribute (tree *node, tree name, tree args, ...@@ -753,24 +750,18 @@ ia64_vms_common_object_attribute (tree *node, tree name, tree args,
bool *no_add_attrs) bool *no_add_attrs)
{ {
tree decl = *node; tree decl = *node;
tree id, val; tree id;
if (! DECL_P (decl))
abort (); gcc_assert (DECL_P (decl));
DECL_COMMON (decl) = 1; DECL_COMMON (decl) = 1;
id = TREE_VALUE (args); id = TREE_VALUE (args);
if (TREE_CODE (id) == IDENTIFIER_NODE) if (TREE_CODE (id) != IDENTIFIER_NODE && TREE_CODE (id) != STRING_CST)
val = build_string (IDENTIFIER_LENGTH (id), IDENTIFIER_POINTER (id));
else if (TREE_CODE (id) == STRING_CST)
val = id;
else
{ {
warning (OPT_Wattributes, error ("%qE attribute requires a string constant argument", name);
"%qE attribute requires a string constant argument", name);
*no_add_attrs = true; *no_add_attrs = true;
return NULL_TREE; return NULL_TREE;
} }
DECL_SECTION_NAME (decl) = val;
return NULL_TREE; return NULL_TREE;
} }
...@@ -783,50 +774,31 @@ ia64_vms_output_aligned_decl_common (FILE *file, tree decl, const char *name, ...@@ -783,50 +774,31 @@ ia64_vms_output_aligned_decl_common (FILE *file, tree decl, const char *name,
{ {
tree attr = DECL_ATTRIBUTES (decl); tree attr = DECL_ATTRIBUTES (decl);
/* As common_object attribute set DECL_SECTION_NAME check it before if (attr)
looking up the attribute. */
if (DECL_SECTION_NAME (decl) && attr)
attr = lookup_attribute ("common_object", attr); attr = lookup_attribute ("common_object", attr);
else if (attr)
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
{ {
ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT)); tree id = TREE_VALUE (TREE_VALUE (attr));
ASM_OUTPUT_LABEL (file, name); const char *name;
ASM_OUTPUT_SKIP (file, size ? size : 1);
}
}
/* Definition of TARGET_ASM_NAMED_SECTION for VMS. */ if (TREE_CODE (id) == IDENTIFIER_NODE)
name = IDENTIFIER_POINTER (id);
void else if (TREE_CODE (id) == STRING_CST)
ia64_vms_elf_asm_named_section (const char *name, unsigned int flags, name = TREE_STRING_POINTER (id);
tree decl) else
{
if (!(flags & SECTION_VMS_OVERLAY))
{
default_elf_asm_named_section (name, flags, decl);
return;
}
if (flags != (SECTION_VMS_OVERLAY | SECTION_WRITE))
abort (); abort ();
if (flags & SECTION_DECLARED) fprintf (file, "\t.vms_common\t\"%s\",", name);
{
fprintf (asm_out_file, "\t.section\t%s\n", name);
return;
} }
else
fprintf (file, "%s", COMMON_ASM_OP);
/* 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 static void
...@@ -10536,12 +10508,6 @@ ia64_section_type_flags (tree decl, const char *name, int reloc) ...@@ -10536,12 +10508,6 @@ ia64_section_type_flags (tree decl, const char *name, int reloc)
|| strncmp (name, ".gnu.linkonce.sb.", 17) == 0) || strncmp (name, ".gnu.linkonce.sb.", 17) == 0)
flags = SECTION_SMALL; 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); flags |= default_section_type_flags (decl, name, reloc);
return flags; return flags;
} }
......
...@@ -121,9 +121,6 @@ STATIC func_ptr __CTOR_LIST__[1] \ ...@@ -121,9 +121,6 @@ STATIC func_ptr __CTOR_LIST__[1] \
#undef TARGET_VALID_POINTER_MODE #undef TARGET_VALID_POINTER_MODE
#define TARGET_VALID_POINTER_MODE ia64_vms_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 /* 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, 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 the value is constrained to be within the bounds of the declared
......
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