Commit b6918051 by Eric Botcazou Committed by Eric Botcazou

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
parent 5cb74e90
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>
......
......@@ -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: */
......
......@@ -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);
......
......@@ -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. */
......
......@@ -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 '^'. */
......
......@@ -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: */
......
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