[PATCH 5/9] regrename: Don't run if function was separately shrink-wrapped
Segher Boessenkool
segher@kernel.crashing.org
Wed Jun 8 01:54:00 GMT 2016
Unfortunately even after the previous patch there are still a few cases
where regrename creates invalid code when used together with separate
shrink-wrapping. I haven't found the cause of those. This patch disables
regrename for functions that were separately shrink-wrapped.
2016-06-07 Segher Boessenkool <segher@kernel.crashing.org>
* regrename.c (gate): Disable regrename if shrink_wrapped_separate
is set in crtl.
---
gcc/regrename.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 00a5d02..5740b1a 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -1956,7 +1956,11 @@ public:
/* opt_pass methods: */
virtual bool gate (function *)
{
- return (optimize > 0 && (flag_rename_registers));
+ /* regrename creates wrong code for exception handling, if used together
+ with separate shrink-wrapping. Disable for now, until we have
+ figured out what exactly is going on. */
+ return (optimize > 0 && flag_rename_registers
+ && !crtl->shrink_wrapped_separate);
}
virtual unsigned int execute (function *) { return regrename_optimize (); }
--
1.9.3
More information about the Gcc-patches
mailing list