diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-21 22:57:30 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-21 22:57:30 +0000 |
commit | 28013ca9251a0000091105c97150d88073a37984 (patch) | |
tree | b90a732adab7578902e19e0f4f3c4a17a500080b /gcc/graphite-clast-to-gimple.c | |
parent | 954e04988c6da7d1cb5839db341ef50f15431028 (diff) | |
download | gcc-28013ca9251a0000091105c97150d88073a37984.tar.gz |
Remove max_signed_precision_type.
2011-07-21 Sebastian Pop <sebastian.pop@amd.com>
* graphite-clast-to-gimple.c (max_signed_precision_type): Removed.
(max_precision_type): Inline max_signed_precision_type.
(type_for_clast_red): Use max_precision_type.
(type_for_clast_bin): Same.
(type_for_clast_for): Same.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176602 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/graphite-clast-to-gimple.c')
-rw-r--r-- | gcc/graphite-clast-to-gimple.c | 51 |
1 files changed, 22 insertions, 29 deletions
diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index b1d682abab5..495b0b7829f 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -206,16 +206,27 @@ clast_name_to_gcc (clast_name_p name, ivs_params_p ip) return VEC_index (tree, *(ip->newivs), index); } -/* Returns the signed maximal precision type for expressions TYPE1 and TYPE2. */ +/* Returns the maximal precision type for expressions TYPE1 and TYPE2. */ static tree -max_signed_precision_type (tree type1, tree type2) +max_precision_type (tree type1, tree type2) { - int p1 = TYPE_PRECISION (type1); - int p2 = TYPE_PRECISION (type2); - int precision; - tree type; enum machine_mode mode; + int p1, p2, precision; + tree type; + + if (POINTER_TYPE_P (type1)) + return type1; + + if (POINTER_TYPE_P (type2)) + return type2; + + if (TYPE_UNSIGNED (type1) + && TYPE_UNSIGNED (type2)) + return TYPE_PRECISION (type1) > TYPE_PRECISION (type2) ? type1 : type2; + + p1 = TYPE_PRECISION (type1); + p2 = TYPE_PRECISION (type2); if (p1 > p2) precision = TYPE_UNSIGNED (type1) ? p1 * 2 : p1; @@ -241,24 +252,6 @@ max_signed_precision_type (tree type1, tree type2) return type; } -/* Returns the maximal precision type for expressions TYPE1 and TYPE2. */ - -static tree -max_precision_type (tree type1, tree type2) -{ - if (POINTER_TYPE_P (type1)) - return type1; - - if (POINTER_TYPE_P (type2)) - return type2; - - if (!TYPE_UNSIGNED (type1) - || !TYPE_UNSIGNED (type2)) - return max_signed_precision_type (type1, type2); - - return TYPE_PRECISION (type1) > TYPE_PRECISION (type2) ? type1 : type2; -} - static tree clast_to_gcc_expression (tree, struct clast_expr *, ivs_params_p); @@ -473,8 +466,8 @@ type_for_clast_red (struct clast_reduction *r, ivs_params_p ip) case clast_red_max: type = type_for_clast_expr (r->elts[0], ip); for (i = 1; i < r->n; i++) - type = max_precision_type (type, type_for_clast_expr - (r->elts[i], ip)); + type = max_precision_type + (type, type_for_clast_expr (r->elts[i], ip)); return type; @@ -493,7 +486,7 @@ type_for_clast_bin (struct clast_binary *b, ivs_params_p ip) { tree l = type_for_clast_expr ((struct clast_expr *) b->LHS, ip); tree r = type_for_value (b->RHS); - return max_signed_precision_type (l, r); + return max_precision_type (l, r); } /* Returns the type for the CLAST expression E when used in statement @@ -688,8 +681,8 @@ type_for_clast_for (struct clast_for *stmt_for, int level, tree lb_type = type_for_clast_expr (stmt_for->LB, ip); tree ub_type = type_for_clast_expr (stmt_for->UB, ip); - return max_signed_precision_type (lb_type, max_precision_type - (ub_type, type_for_level (pbb, level))); + return max_precision_type + (lb_type, max_precision_type (ub_type, type_for_level (pbb, level))); } /* Creates a new LOOP corresponding to Cloog's STMT. Inserts an |