* tree.h: Declare folding_initializer.
* builtins.c (fold_builtin_constant_p): Give definite answer
if folding inside an initializer.
* fold-const.c: Define folding_initializer.
(START_FOLD_INIT): Save and then set folding_initializer.
(END_FOLD_INIT): Restore folding_initializer.
gcc/testsuite:
* gcc.c-torture/compile/builtin_constant_p.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114358
138bc75d-0d04-0410-961f-
82ee72b054a4
+2006-06-04 Mark Shinwell <shinwell@codesourcery.com>
+
+ * tree.h: Declare folding_initializer.
+ * builtins.c (fold_builtin_constant_p): Give definite answer
+ if folding inside an initializer.
+ * fold-const.c: Define folding_initializer.
+ (START_FOLD_INIT): Save and then set folding_initializer.
+ (END_FOLD_INIT): Restore folding_initializer.
+
2006-06-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/27039
if (TREE_SIDE_EFFECTS (arglist)
|| AGGREGATE_TYPE_P (TREE_TYPE (arglist))
|| POINTER_TYPE_P (TREE_TYPE (arglist))
- || cfun == 0)
+ || cfun == 0
+ || folding_initializer)
return integer_zero_node;
return 0;
#include "langhooks.h"
#include "md5.h"
+/* Non-zero if we are folding constants inside an initializer; zero
+ otherwise. */
+int folding_initializer = 0;
+
/* The following constants represent a bit based encoding of GCC's
comparison operators. This encoding simplifies transformations
on relational comparison operators, such as AND and OR. */
int saved_trapping_math = flag_trapping_math;\
int saved_rounding_math = flag_rounding_math;\
int saved_trapv = flag_trapv;\
+ int saved_folding_initializer = folding_initializer;\
flag_signaling_nans = 0;\
flag_trapping_math = 0;\
flag_rounding_math = 0;\
- flag_trapv = 0
+ flag_trapv = 0;\
+ folding_initializer = 1;
#define END_FOLD_INIT \
flag_signaling_nans = saved_signaling_nans;\
flag_trapping_math = saved_trapping_math;\
flag_rounding_math = saved_rounding_math;\
- flag_trapv = saved_trapv
+ flag_trapv = saved_trapv;\
+ folding_initializer = saved_folding_initializer;
tree
fold_build1_initializer (enum tree_code code, tree type, tree op)
+2006-06-04 Mark Shinwell <shinwell@codesourcery.com>
+
+ * gcc.c-torture/compile/builtin_constant_p.c: New test.
+
2006-06-04 Richard Guenther <rguenther@suse.de>
PR tree-optimization/27039
/* In fold-const.c */
+/* Non-zero if we are folding constants inside an initializer; zero
+ otherwise. */
+extern int folding_initializer;
+
/* Fold constants as much as possible in an expression.
Returns the simplified expression.
Acts only on the top level of the expression;