Commit c68cdfac by Eric Botcazou Committed by Eric Botcazou

trans.c (Attribute_to_gnu): Do not apply extra-precision trick to literals.

	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Machine>: Do not apply
	extra-precision trick to literals.  Build SAVE_EXPR manually.

	* gcc-interface/misc.c (enumerate_modes): Add bypass for x86/x86-64.

From-SVN: r223715
parent 241125b2
2015-05-26 Eric Botcazou <ebotcazou@adacore.com> 2015-05-26 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Machine>: Do not apply
extra-precision trick to literals. Build SAVE_EXPR manually.
* gcc-interface/misc.c (enumerate_modes): Add bypass for x86/x86-64.
2015-05-26 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/ada-tree.h (DECL_GLOBAL_NONCONSTANT_RENAMING_P): Delete * gcc-interface/ada-tree.h (DECL_GLOBAL_NONCONSTANT_RENAMING_P): Delete
(DECL_RENAMED_OBJECT): Adjust comment. (DECL_RENAMED_OBJECT): Adjust comment.
* gcc-interface/gigi.h (record_global_nonconstant_renaming): Delete. * gcc-interface/gigi.h (record_global_nonconstant_renaming): Delete.
......
...@@ -847,7 +847,12 @@ enumerate_modes (void (*f) (const char *, int, int, int, int, int, int, int)) ...@@ -847,7 +847,12 @@ enumerate_modes (void (*f) (const char *, int, int, int, int, int, int, int))
|| fmt == &ieee_extended_intel_96_format || fmt == &ieee_extended_intel_96_format
|| fmt == &ieee_extended_intel_96_round_53_format || fmt == &ieee_extended_intel_96_round_53_format
|| fmt == &ieee_extended_intel_128_format) || fmt == &ieee_extended_intel_128_format)
fp_arith_may_widen = true; {
#ifdef TARGET_FPMATH_DEFAULT
if (TARGET_FPMATH_DEFAULT == FPMATH_387)
#endif
fp_arith_may_widen = true;
}
if (fmt->b == 2) if (fmt->b == 2)
digs = (fmt->p - 1) * 1233 / 4096; /* scale by log (2) */ digs = (fmt->p - 1) * 1233 / 4096; /* scale by log (2) */
......
...@@ -2428,7 +2428,8 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute) ...@@ -2428,7 +2428,8 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
gnu_result_type = get_unpadded_type (Etype (gnat_node)); gnu_result_type = get_unpadded_type (Etype (gnat_node));
gnu_result = convert (gnu_result_type, gnu_expr); gnu_result = convert (gnu_result_type, gnu_expr);
if (fp_arith_may_widen if (TREE_CODE (gnu_result) != REAL_CST
&& fp_arith_may_widen
&& TYPE_PRECISION (gnu_result_type) && TYPE_PRECISION (gnu_result_type)
< TYPE_PRECISION (longest_float_type_node)) < TYPE_PRECISION (longest_float_type_node))
{ {
...@@ -2441,7 +2442,7 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute) ...@@ -2441,7 +2442,7 @@ Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
finish_record_type (rec_type, field, 0, false); finish_record_type (rec_type, field, 0, false);
rec_val = build_constructor_single (rec_type, field, gnu_result); rec_val = build_constructor_single (rec_type, field, gnu_result);
rec_val = save_expr (rec_val); rec_val = build1 (SAVE_EXPR, rec_type, rec_val);
asm_expr asm_expr
= build5 (ASM_EXPR, void_type_node, = build5 (ASM_EXPR, void_type_node,
......
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