This enabled ranger for use in isel to do some ranged based foldings.
Not much else to write about this one :)
Bootstrapped Regtested on aarch64-none-linux-gnu,
arm-none-linux-gnueabihf, x86_64-pc-linux-gnu
-m32, -m64 and no issues.
Ok for master?
Thanks,
Tamar
gcc/ChangeLog:
* gimple-isel.cc (pass_gimple_isel::execute): Enable and disable ranger
on fun.
---
diff --git a/gcc/gimple-isel.cc b/gcc/gimple-isel.cc
index
b193e27b183e1a83d73369b629c81ea0d7db43cd..0bd3a2f732922bc939c9d5fb4a221764def6e756
100644
--- a/gcc/gimple-isel.cc
+++ b/gcc/gimple-isel.cc
@@ -40,6 +40,8 @@ along with GCC; see the file COPYING3. If not see
#include "gimple-fold.h"
#include "internal-fn.h"
#include "fold-const.h"
+#include "gimple-range.h"
+
/* Expand all ARRAY_REF(VIEW_CONVERT_EXPR) gimple assignments into calls to
internal function based on vector type of selected expansion.
@@ -1352,6 +1354,9 @@ pass_gimple_isel::execute (struct function *fun)
gimple_stmt_iterator gsi;
basic_block bb;
bool cfg_changed = false;
+ bool created_ranger = get_range_query (fun) == get_global_range_query ();
+ if (created_ranger)
+ enable_ranger (fun);
FOR_EACH_BB_FN (bb, fun)
{
@@ -1390,6 +1395,8 @@ pass_gimple_isel::execute (struct function *fun)
}
}
+ if (created_ranger)
+ disable_ranger (fun);
return cfg_changed ? TODO_cleanup_cfg : 0;
}
--
diff --git a/gcc/gimple-isel.cc b/gcc/gimple-isel.cc
index b193e27b183e1a83d73369b629c81ea0d7db43cd..0bd3a2f732922bc939c9d5fb4a221764def6e756 100644
--- a/gcc/gimple-isel.cc
+++ b/gcc/gimple-isel.cc
@@ -40,6 +40,8 @@ along with GCC; see the file COPYING3. If not see
#include "gimple-fold.h"
#include "internal-fn.h"
#include "fold-const.h"
+#include "gimple-range.h"
+
/* Expand all ARRAY_REF(VIEW_CONVERT_EXPR) gimple assignments into calls to
internal function based on vector type of selected expansion.
@@ -1352,6 +1354,9 @@ pass_gimple_isel::execute (struct function *fun)
gimple_stmt_iterator gsi;
basic_block bb;
bool cfg_changed = false;
+ bool created_ranger = get_range_query (fun) == get_global_range_query ();
+ if (created_ranger)
+ enable_ranger (fun);
FOR_EACH_BB_FN (bb, fun)
{
@@ -1390,6 +1395,8 @@ pass_gimple_isel::execute (struct function *fun)
}
}
+ if (created_ranger)
+ disable_ranger (fun);
return cfg_changed ? TODO_cleanup_cfg : 0;
}