Commit 269e63b7 by Kai Tietz Committed by Jason Merrill

Add non-folding variants for convert_to_*.

2015-11-13  Kai Tietz  <ktietz70@googlemail.com>
	    Marek Polacek  <polacek@redhat.com>
	    Jason Merrill  <jason@redhat.com>

gcc/
	* convert.c (maybe_fold_build1_loc): New.
	(maybe_fold_build2_loc): New.
	(convert_to_pointer_1): Split out from convert_to_pointer.
	(convert_to_pointer_nofold): New.
	(convert_to_real_1): Split out from convert_to_real.
	(convert_to_real_nofold): New.
	(convert_to_integer_1): Split out from convert_to_integer.
	(convert_to_integer_nofold): New.
	(convert_to_complex_1): Split out from convert_to_complex.
	(convert_to_complex_nofold): New.
	* convert.h: Declare new functions.
	* tree-complex.c (create_one_component_var): Break up line to
	avoid sequence point issues.
gcc/c-family/
	* c-lex.c (interpret_float): Use fold_convert.

Co-Authored-By: Jason Merrill <jason@redhat.com>
Co-Authored-By: Marek Polacek <polacek@redhat.com>

From-SVN: r230359
parent 9514e74f
2015-11-13 Kai Tietz <ktietz70@googlemail.com>
Marek Polacek <polacek@redhat.com>
Jason Merrill <jason@redhat.com>
* convert.c (maybe_fold_build1_loc): New.
(maybe_fold_build2_loc): New.
(convert_to_pointer_1): Split out from convert_to_pointer.
(convert_to_pointer_nofold): New.
(convert_to_real_1): Split out from convert_to_real.
(convert_to_real_nofold): New.
(convert_to_integer_1): Split out from convert_to_integer.
(convert_to_integer_nofold): New.
(convert_to_complex_1): Split out from convert_to_complex.
(convert_to_complex_nofold): New.
* convert.h: Declare new functions.
* tree-complex.c (create_one_component_var): Break up line to
avoid sequence point issues.
2015-11-13 Jason Merrill <jason@redhat.com> 2015-11-13 Jason Merrill <jason@redhat.com>
* fold-const.c (fold_convert_const): Fold changing cv-quals on * fold-const.c (fold_convert_const): Fold changing cv-quals on
2015-11-13 Kai Tietz <ktietz70@googlemail.com>
* c-lex.c (interpret_float): Use fold_convert.
2015-11-13 David Malcolm <dmalcolm@redhat.com> 2015-11-13 David Malcolm <dmalcolm@redhat.com>
* c-common.c (c_fully_fold_internal): Capture existing souce_range, * c-common.c (c_fully_fold_internal): Capture existing souce_range,
......
...@@ -926,8 +926,9 @@ interpret_float (const cpp_token *token, unsigned int flags, ...@@ -926,8 +926,9 @@ interpret_float (const cpp_token *token, unsigned int flags,
value = build_real (const_type, real); value = build_real (const_type, real);
if (flags & CPP_N_IMAGINARY) if (flags & CPP_N_IMAGINARY)
{ {
value = build_complex (NULL_TREE, convert (const_type, value = build_complex (NULL_TREE,
integer_zero_node), value); fold_convert (const_type,
integer_zero_node), value);
if (type != const_type) if (type != const_type)
{ {
const_type = TREE_TYPE (value); const_type = TREE_TYPE (value);
......
...@@ -21,10 +21,14 @@ along with GCC; see the file COPYING3. If not see ...@@ -21,10 +21,14 @@ along with GCC; see the file COPYING3. If not see
#define GCC_CONVERT_H #define GCC_CONVERT_H
extern tree convert_to_integer (tree, tree); extern tree convert_to_integer (tree, tree);
extern tree convert_to_integer_nofold (tree, tree);
extern tree convert_to_pointer (tree, tree); extern tree convert_to_pointer (tree, tree);
extern tree convert_to_pointer_nofold (tree, tree);
extern tree convert_to_real (tree, tree); extern tree convert_to_real (tree, tree);
extern tree convert_to_real_nofold (tree, tree);
extern tree convert_to_fixed (tree, tree); extern tree convert_to_fixed (tree, tree);
extern tree convert_to_complex (tree, tree); extern tree convert_to_complex (tree, tree);
extern tree convert_to_complex_nofold (tree, tree);
extern tree convert_to_vector (tree, tree); extern tree convert_to_vector (tree, tree);
#endif /* GCC_CONVERT_H */ #endif /* GCC_CONVERT_H */
...@@ -432,8 +432,8 @@ create_one_component_var (tree type, tree orig, const char *prefix, ...@@ -432,8 +432,8 @@ create_one_component_var (tree type, tree orig, const char *prefix,
if (DECL_NAME (orig) && !DECL_IGNORED_P (orig)) if (DECL_NAME (orig) && !DECL_IGNORED_P (orig))
{ {
const char *name = IDENTIFIER_POINTER (DECL_NAME (orig)); const char *name = IDENTIFIER_POINTER (DECL_NAME (orig));
name = ACONCAT ((name, suffix, NULL));
DECL_NAME (r) = get_identifier (ACONCAT ((name, suffix, NULL))); DECL_NAME (r) = get_identifier (name);
SET_DECL_DEBUG_EXPR (r, build1 (code, type, orig)); SET_DECL_DEBUG_EXPR (r, build1 (code, type, orig));
DECL_HAS_DEBUG_EXPR_P (r) = 1; DECL_HAS_DEBUG_EXPR_P (r) = 1;
......
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