* tree-ssa-live.h (coalesce_ssa_name): Move Prototype to...
* tree-ssa-coalesce.h: New. Move prototype to here.
* tree-outof-ssa.h: Include tree-ssa-coalesce.h.
* tree-ssa-coalesce.c: Include tree-outof-ssa.h.
(gimple_can_coalesce_p): Move to...
* gimple.c (gimple_can_coalesce_p): Here.
*************** make_live_on_entry (tree_live_info_p liv
bitmap_set_bit (live->global, p);
}
-
- /* From tree-ssa-coalesce.c */
- extern var_map coalesce_ssa_name (void);
-
#endif /* _TREE_SSA_LIVE_H */
***************
+ /* Header file for tree-ssa-coalesce.c exports.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+
+ #ifndef GCC_TREE_SSA_COALESCE_H
+ #define GCC_TREE_SSA_COALESCE_H
+
+ extern var_map coalesce_ssa_name (void);
+
+
+ #endif /* GCC_TREE_SSA_COALESCE_H */
*************** along with GCC; see the file COPYING3.
#include "tree-ssa-live.h"
#include "tree-ssa-ter.h"
+ #include "tree-ssa-coalesce.h"
/* This structure (of which only a singleton SA exists) is used to
pass around information between the outof-SSA functions, cfgexpand
*************** along with GCC; see the file COPYING3.
#include "dumpfile.h"
#include "tree-ssa.h"
#include "hash-table.h"
! #include "tree-ssa-live.h"
#include "diagnostic-core.h"
#include "dumpfile.h"
#include "tree-ssa.h"
#include "hash-table.h"
! #include "tree-outof-ssa.h"
#include "diagnostic-core.h"
*************** coalesce_ssa_name (void)
return map;
}
-
- /* Given SSA_NAMEs NAME1 and NAME2, return true if they are candidates for
- coalescing together, false otherwise.
-
- This must stay consistent with var_map_base_init in tree-ssa-live.c. */
-
- bool
- gimple_can_coalesce_p (tree name1, tree name2)
- {
- /* First check the SSA_NAME's associated DECL. We only want to
- coalesce if they have the same DECL or both have no associated DECL. */
- tree var1 = SSA_NAME_VAR (name1);
- tree var2 = SSA_NAME_VAR (name2);
- var1 = (var1 && (!VAR_P (var1) || !DECL_IGNORED_P (var1))) ? var1 : NULL_TREE;
- var2 = (var2 && (!VAR_P (var2) || !DECL_IGNORED_P (var2))) ? var2 : NULL_TREE;
- if (var1 != var2)
- return false;
-
- /* Now check the types. If the types are the same, then we should
- try to coalesce V1 and V2. */
- tree t1 = TREE_TYPE (name1);
- tree t2 = TREE_TYPE (name2);
- if (t1 == t2)
- return true;
-
- /* If the types are not the same, check for a canonical type match. This
- (for example) allows coalescing when the types are fundamentally the
- same, but just have different names.
-
- Note pointer types with different address spaces may have the same
- canonical type. Those are rejected for coalescing by the
- types_compatible_p check. */
- if (TYPE_CANONICAL (t1)
- && TYPE_CANONICAL (t1) == TYPE_CANONICAL (t2)
- && types_compatible_p (t1, t2))
- return true;
-
- return false;
- }
*************** dump_decl_set (FILE *file, bitmap set)
fprintf (file, "NIL");
}
+ /* Given SSA_NAMEs NAME1 and NAME2, return true if they are candidates for
+ coalescing together, false otherwise.
+
+ This must stay consistent with var_map_base_init in tree-ssa-live.c. */
+
+ bool
+ gimple_can_coalesce_p (tree name1, tree name2)
+ {
+ /* First check the SSA_NAME's associated DECL. We only want to
+ coalesce if they have the same DECL or both have no associated DECL. */
+ tree var1 = SSA_NAME_VAR (name1);
+ tree var2 = SSA_NAME_VAR (name2);
+ var1 = (var1 && (!VAR_P (var1) || !DECL_IGNORED_P (var1))) ? var1 : NULL_TREE;
+ var2 = (var2 && (!VAR_P (var2) || !DECL_IGNORED_P (var2))) ? var2 : NULL_TREE;
+ if (var1 != var2)
+ return false;
+
+ /* Now check the types. If the types are the same, then we should
+ try to coalesce V1 and V2. */
+ tree t1 = TREE_TYPE (name1);
+ tree t2 = TREE_TYPE (name2);
+ if (t1 == t2)
+ return true;
+
+ /* If the types are not the same, check for a canonical type match. This
+ (for example) allows coalescing when the types are fundamentally the
+ same, but just have different names.
+
+ Note pointer types with different address spaces may have the same
+ canonical type. Those are rejected for coalescing by the
+ types_compatible_p check. */
+ if (TYPE_CANONICAL (t1)
+ && TYPE_CANONICAL (t1) == TYPE_CANONICAL (t2)
+ && types_compatible_p (t1, t2))
+ return true;
+
+ return false;
+ }
#include "gt-gimple.h"