diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-10-25 19:29:10 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-10-25 19:29:10 +0000 |
commit | ccdb7effd845cf3007729e72570b742f74750112 (patch) | |
tree | c5d5d07a5dd6ae510ee695debbf6305c1e603568 | |
parent | 78b30b7b34c5a91aa82e32862d24f77c11fe8ed3 (diff) | |
download | gcc-ccdb7effd845cf3007729e72570b742f74750112.tar.gz |
* gcc-interface/utils2.c: Include flags.h and remove prototypes.
(build_unary_op) <TRUTH_NOT_EXPR>: When not optimizing, fold the result
of the call to invert_truthvalue_loc.
* gcc-interface/Make-lang.in (utils2.o): Add $(FLAGS_H).
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165928 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/Make-lang.in | 2 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/utils2.c | 11 |
3 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b5162f79c87..3ab14974838 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,12 @@ 2010-10-25 Eric Botcazou <ebotcazou@adacore.com> + * gcc-interface/utils2.c: Include flags.h and remove prototypes. + (build_unary_op) <TRUTH_NOT_EXPR>: When not optimizing, fold the result + of the call to invert_truthvalue_loc. + * gcc-interface/Make-lang.in (utils2.o): Add $(FLAGS_H). + +2010-10-25 Eric Botcazou <ebotcazou@adacore.com> + * gcc-interface/utils.c (update_pointer_to): Clear TYPE_POINTER_TO and TYPE_REFERENCE_TO of the old type after redirecting its pointer and reference types. diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in index 8af0895fd2f..578f9f26faa 100644 --- a/gcc/ada/gcc-interface/Make-lang.in +++ b/gcc/ada/gcc-interface/Make-lang.in @@ -1264,7 +1264,7 @@ ada/utils.o : ada/gcc-interface/utils.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(COMPILER) -c $(ALL_COMPILERFLAGS) -I.. $(ALL_CPPFLAGS) $< -o $@ ada/utils2.o : ada/gcc-interface/utils2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(TREE_H) output.h $(TREE_INLINE_H) \ + $(TM_H) $(TREE_H) $(FLAGS_H) output.h $(TREE_INLINE_H) \ ada/gcc-interface/ada.h ada/types.h ada/atree.h ada/elists.h ada/namet.h \ ada/nlists.h ada/snames.h ada/stringt.h ada/uintp.h ada/fe.h ada/sinfo.h \ ada/einfo.h $(ADA_TREE_H) ada/gcc-interface/gigi.h diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c index c7db5a5f204..4c0853ea0ff 100644 --- a/gcc/ada/gcc-interface/utils2.c +++ b/gcc/ada/gcc-interface/utils2.c @@ -28,6 +28,7 @@ #include "coretypes.h" #include "tm.h" #include "tree.h" +#include "flags.h" #include "ggc.h" #include "output.h" #include "tree-inline.h" @@ -47,11 +48,6 @@ #include "ada-tree.h" #include "gigi.h" -static tree find_common_type (tree, tree); -static tree compare_arrays (tree, tree, tree); -static tree nonbinary_modular_operation (enum tree_code, tree, tree, tree); -static tree build_simple_component_ref (tree, tree, tree, bool); - /* Return the base type of TYPE. */ tree @@ -1024,6 +1020,11 @@ build_unary_op (enum tree_code op_code, tree result_type, tree operand) gcc_assert (TREE_CODE (get_base_type (result_type)) == BOOLEAN_TYPE); #endif result = invert_truthvalue_loc (EXPR_LOCATION (operand), operand); + /* When not optimizing, fold the result as invert_truthvalue_loc + doesn't fold the result of comparisons. This is intended to undo + the trick used for boolean rvalues in gnat_to_gnu. */ + if (!optimize) + result = fold (result); break; case ATTR_ADDR_EXPR: |