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:
parent
5cb74e90b3
commit
b691805167
6 changed files with 49 additions and 31 deletions
|
@ -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>
|
||||
|
||||
|
|
|
@ -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: */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue