fe.h (Compiler_Abort): Replace Fat_Pointer with String_Pointer.

* fe.h (Compiler_Abort): Replace Fat_Pointer with String_Pointer.
	(Error_Msg_N): Likewise.
	(Error_Msg_NE): Likewise.
	(Get_External_Name_With_Suffix): Likewise.
	* types.h (Fat_Pointer): Delete.
	(String_Pointer): New type.
	(DECLARE_STRING_POINTER): New macro.
	* gcc-interface/decl.c (create_concat_name): Adjust.
	* gcc-interface/trans.c (post_error): Likewise.
	(post_error_ne): Likewise.
	* gcc-interface/misc.c (internal_error_function): Likewise.

From-SVN: r209644
This commit is contained in:
Eric Botcazou 2014-04-22 16:16:25 +00:00 committed by Eric Botcazou
parent 5cb74e90b3
commit b691805167
6 changed files with 49 additions and 31 deletions

View file

@ -1,3 +1,17 @@
2014-04-22 Eric Botcazou <ebotcazou@adacore.com>
* fe.h (Compiler_Abort): Replace Fat_Pointer with String_Pointer.
(Error_Msg_N): Likewise.
(Error_Msg_NE): Likewise.
(Get_External_Name_With_Suffix): Likewise.
* types.h (Fat_Pointer): Delete.
(String_Pointer): New type.
(DECLARE_STRING_POINTER): New macro.
* gcc-interface/decl.c (create_concat_name): Adjust.
* gcc-interface/trans.c (post_error): Likewise.
(post_error_ne): Likewise.
* gcc-interface/misc.c (internal_error_function): Likewise.
2014-04-15 Eric Botcazou <ebotcazou@adacore.com>
Pierre-Marie de Rodat <derodat@adacore.com>

View file

@ -39,7 +39,7 @@ extern "C" {
/* comperr: */
#define Compiler_Abort comperr__compiler_abort
extern int Compiler_Abort (Fat_Pointer, int, Fat_Pointer) ATTRIBUTE_NORETURN;
extern int Compiler_Abort (String_Pointer, int, String_Pointer) ATTRIBUTE_NORETURN;
/* csets: */
@ -90,8 +90,8 @@ extern Node_Id Get_Attribute_Definition_Clause (Entity_Id, char);
#define Error_Msg_NE errout__error_msg_ne
#define Set_Identifier_Casing errout__set_identifier_casing
extern void Error_Msg_N (Fat_Pointer, Node_Id);
extern void Error_Msg_NE (Fat_Pointer, Node_Id, Entity_Id);
extern void Error_Msg_N (String_Pointer, Node_Id);
extern void Error_Msg_NE (String_Pointer, Node_Id, Entity_Id);
extern void Set_Identifier_Casing (Char *, const Char *);
/* err_vars: */
@ -151,7 +151,7 @@ extern void Setup_Asm_Outputs (Node_Id);
extern void Get_Encoded_Name (Entity_Id);
extern void Get_External_Name (Entity_Id, Boolean);
extern void Get_External_Name_With_Suffix (Entity_Id, Fat_Pointer);
extern void Get_External_Name_With_Suffix (Entity_Id, String_Pointer);
/* exp_util: */

View file

@ -8861,8 +8861,10 @@ create_concat_name (Entity_Id gnat_entity, const char *suffix)
if (suffix)
{
String_Template temp = {1, (int) strlen (suffix)};
Fat_Pointer fp = {suffix, &temp};
Get_External_Name_With_Suffix (gnat_entity, fp);
DECLARE_STRING_POINTER (sp);
sp.Bounds = &temp;
sp.Array = suffix;
Get_External_Name_With_Suffix (gnat_entity, sp);
}
else
Get_External_Name (gnat_entity, 0);

View file

@ -283,8 +283,8 @@ internal_error_function (diagnostic_context *context,
text_info tinfo;
char *buffer, *p, *loc;
String_Template temp, temp_loc;
Fat_Pointer fp, fp_loc;
expanded_location s;
DECLARE_STRING_POINTER (sp, sp_loc);
expanded_location xloc;
/* Warn if plugins present. */
warn_if_plugins ();
@ -311,21 +311,21 @@ internal_error_function (diagnostic_context *context,
temp.Low_Bound = 1;
temp.High_Bound = p - buffer;
fp.Bounds = &temp;
fp.Array = buffer;
sp.Bounds = &temp;
sp.Array = buffer;
s = expand_location (input_location);
if (context->show_column && s.column != 0)
asprintf (&loc, "%s:%d:%d", s.file, s.line, s.column);
xloc = expand_location (input_location);
if (context->show_column && xloc.column != 0)
asprintf (&loc, "%s:%d:%d", xloc.file, xloc.line, xloc.column);
else
asprintf (&loc, "%s:%d", s.file, s.line);
asprintf (&loc, "%s:%d", xloc.file, xloc.line);
temp_loc.Low_Bound = 1;
temp_loc.High_Bound = strlen (loc);
fp_loc.Bounds = &temp_loc;
fp_loc.Array = loc;
sp_loc.Bounds = &temp_loc;
sp_loc.Array = loc;
Current_Error_Node = error_gnat_node;
Compiler_Abort (fp, -1, fp_loc);
Compiler_Abort (sp, -1, sp_loc);
}
/* Perform all the initialization steps that are language-specific. */

View file

@ -7833,7 +7833,6 @@ gnat_gimplify_stmt (tree *stmt_p)
gnu_cond = build2 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
build_int_cst (integer_type_node,
annot_expr_ivdep_kind));
if (LOOP_STMT_NO_VECTOR (stmt))
gnu_cond = build2 (ANNOTATE_EXPR, TREE_TYPE (gnu_cond), gnu_cond,
build_int_cst (integer_type_node,
@ -9357,16 +9356,16 @@ void
post_error (const char *msg, Node_Id node)
{
String_Template temp;
Fat_Pointer fp;
DECLARE_STRING_POINTER (sp);
if (No (node))
return;
temp.Low_Bound = 1;
temp.High_Bound = strlen (msg);
fp.Bounds = &temp;
fp.Array = msg;
Error_Msg_N (fp, node);
sp.Bounds = &temp;
sp.Array = msg;
Error_Msg_N (sp, node);
}
/* Similar to post_error, but NODE is the node at which to post the error and
@ -9376,16 +9375,16 @@ void
post_error_ne (const char *msg, Node_Id node, Entity_Id ent)
{
String_Template temp;
Fat_Pointer fp;
DECLARE_STRING_POINTER (sp);
if (No (node))
return;
temp.Low_Bound = 1;
temp.High_Bound = strlen (msg);
fp.Bounds = &temp;
fp.Array = msg;
Error_Msg_NE (fp, node, ent);
sp.Bounds = &temp;
sp.Array = msg;
Error_Msg_NE (sp, node, ent);
}
/* Similar to post_error_ne, but NUM is the number to use for the '^'. */

View file

@ -76,11 +76,14 @@ typedef Char *Str;
/* Pointer to string of Chars */
typedef Char *Str_Ptr;
/* Types for the fat pointer used for strings and the template it
points to. */
typedef struct {int Low_Bound, High_Bound; } String_Template;
typedef struct {const char *Array; String_Template *Bounds; }
__attribute ((aligned (sizeof (char *) * 2))) Fat_Pointer;
/* Types for the fat pointer used for strings and the template it points to.
On most platforms the fat pointer is naturally aligned but, on the rest,
it is given twice the natural alignment. For maximum portability, we do
not overalign the type but only the objects. */
typedef struct { int Low_Bound, High_Bound; } String_Template;
typedef struct { const char *Array; String_Template *Bounds; } String_Pointer;
#define DECLARE_STRING_POINTER(...) \
__attribute__ ((aligned (sizeof (char *) * 2))) String_Pointer __VA_ARGS__
/* Types for Node/Entity Kinds: */