diff options
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ada/cuintp.c | 15 | ||||
-rw-r--r-- | gcc/ada/trans.c | 21 |
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); |