summaryrefslogtreecommitdiff
path: root/src/jit/optimizer.cpp
diff options
context:
space:
mode:
authorJoseph Tremoulet <JCTremoulet@gmail.com>2016-11-04 17:54:51 -0400
committerGitHub <noreply@github.com>2016-11-04 17:54:51 -0400
commitb67ff5ed804ba161ca7c80ad29893e9e9ebbe470 (patch)
tree9904e98bebe29520dd2720d93194f63f4e9f84c2 /src/jit/optimizer.cpp
parent342ba49767ebd256f1adf449b9cfd51de8e1d03f (diff)
parent86d4d5999267b687be6c404a3a998a9499f7a57f (diff)
downloadcoreclr-b67ff5ed804ba161ca7c80ad29893e9e9ebbe470.tar.gz
coreclr-b67ff5ed804ba161ca7c80ad29893e9e9ebbe470.tar.bz2
coreclr-b67ff5ed804ba161ca7c80ad29893e9e9ebbe470.zip
Merge pull request #7996 from JosephTremoulet/OptRepeat
Add JitOptRepeat debug config flags
Diffstat (limited to 'src/jit/optimizer.cpp')
-rw-r--r--src/jit/optimizer.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/jit/optimizer.cpp b/src/jit/optimizer.cpp
index fdcae0eeee..27990e8a79 100644
--- a/src/jit/optimizer.cpp
+++ b/src/jit/optimizer.cpp
@@ -1085,9 +1085,24 @@ bool Compiler::optExtractInitTestIncr(
// If it is a duplicated loop condition, skip it.
if (init->gtFlags & GTF_STMT_CMPADD)
{
- // Must be a duplicated loop condition.
- noway_assert(init->gtStmt.gtStmtExpr->gtOper == GT_JTRUE);
- init = init->gtPrev;
+ bool doGetPrev = true;
+#ifdef DEBUG
+ if (opts.optRepeat)
+ {
+ // Previous optimization passes may have inserted compiler-generated
+ // statements other than duplicated loop conditions.
+ doGetPrev = (init->gtPrev != nullptr);
+ }
+ else
+ {
+ // Must be a duplicated loop condition.
+ noway_assert(init->gtStmt.gtStmtExpr->gtOper == GT_JTRUE);
+ }
+#endif // DEBUG
+ if (doGetPrev)
+ {
+ init = init->gtPrev;
+ }
noway_assert(init != nullptr);
}