summaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog7
-rw-r--r--gcc/ada/cuintp.c15
-rw-r--r--gcc/ada/trans.c21
3 files changed, 29 insertions, 14 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index ef1854ce001..4b5107396db 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,10 @@
+2004-08-16 Nathan Sidwell <nathan@codesourcery.com>
+
+ * cuintp.c (UI_To_gnu): Be more conservative with build_int_cst
+ call.s
+ * trans.c (Exception_Handler_to_gnu_sjlj): Likewise.
+ (gnat_to_gnu): Likewise.
+
2004-08-16 Pascal Obry <obry@gnat.com>
* adaint.c (__gnat_prj_add_obj_files): Set to 0 only on Win32 for GCC
diff --git a/gcc/ada/cuintp.c b/gcc/ada/cuintp.c
index c0338afb5d9..b919bb58ce1 100644
--- a/gcc/ada/cuintp.c
+++ b/gcc/ada/cuintp.c
@@ -76,26 +76,29 @@ UI_To_gnu (Uint Input, tree type)
tree comp_type
= (TYPE_PRECISION (type) >= TYPE_PRECISION (integer_type_node)
? type : integer_type_node);
- tree gnu_base = build_int_cst (comp_type, Base, 0);
+ tree gnu_base = convert (comp_type, build_int_cst (NULL_TREE, Base, 0));
if (Length <= 0)
abort ();
- gnu_ret = build_int_cst (comp_type, First, First < 0 ? -1 : 0);
+ gnu_ret = convert (comp_type, build_int_cst (NULL_TREE,
+ First, First < 0 ? -1 : 0));
if (First < 0)
for (Idx++, Length--; Length; Idx++, Length--)
gnu_ret = fold (build (MINUS_EXPR, comp_type,
fold (build (MULT_EXPR, comp_type,
gnu_ret, gnu_base)),
- build_int_cst (comp_type,
- Udigits_Ptr[Idx], 0)));
+ convert (comp_type,
+ build_int_cst (NULL_TREE,
+ Udigits_Ptr[Idx], 0))));
else
for (Idx++, Length--; Length; Idx++, Length--)
gnu_ret = fold (build (PLUS_EXPR, comp_type,
fold (build (MULT_EXPR, comp_type,
gnu_ret, gnu_base)),
- build_int_cst (comp_type,
- Udigits_Ptr[Idx], 0)));
+ convert (comp_type,
+ build_int_cst (NULL_TREE,
+ Udigits_Ptr[Idx], 0))));
}
gnu_ret = convert (type, gnu_ret);
diff --git a/gcc/ada/trans.c b/gcc/ada/trans.c
index e00400223f5..452c3e56fc7 100644
--- a/gcc/ada/trans.c
+++ b/gcc/ada/trans.c
@@ -2217,8 +2217,9 @@ Exception_Handler_to_gnu_sjlj (Node_Id gnat_node)
= build_binary_op
(TRUTH_ORIF_EXPR, integer_type_node,
build_binary_op (EQ_EXPR, integer_type_node, gnu_comp,
- build_int_cst (TREE_TYPE (gnu_comp),
- 'V', 0)),
+ convert (TREE_TYPE (gnu_comp),
+ build_int_cst (NULL_TREE,
+ 'V', 0))),
this_choice);
}
}
@@ -2504,8 +2505,9 @@ gnat_to_gnu (Node_Id gnat_node)
if (Present (Entity (gnat_node)))
gnu_result = DECL_INITIAL (get_gnu_tree (Entity (gnat_node)));
else
- gnu_result = build_int_cst (gnu_result_type,
- Char_Literal_Value (gnat_node), 0);
+ gnu_result = convert (gnu_result_type,
+ build_int_cst (NULL_TREE,
+ Char_Literal_Value (gnat_node), 0));
break;
case N_Real_Literal:
@@ -2617,10 +2619,13 @@ gnat_to_gnu (Node_Id gnat_node)
for (i = 0; i < length; i++)
{
gnu_list
- = tree_cons (gnu_idx, build_int_cst
- (TREE_TYPE (gnu_result_type),
- Get_String_Char (gnat_string, i + 1), 0),
- gnu_list);
+ = tree_cons (gnu_idx,
+ convert (TREE_TYPE (gnu_result_type),
+ build_int_cst
+ (NULL_TREE,
+ Get_String_Char (gnat_string, i + 1),
+ 0)),
+ gnu_list);
gnu_idx = int_const_binop (PLUS_EXPR, gnu_idx, integer_one_node,
0);