diff options
author | Joseph Tremoulet <JCTremoulet@gmail.com> | 2016-11-04 17:54:51 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-04 17:54:51 -0400 |
commit | b67ff5ed804ba161ca7c80ad29893e9e9ebbe470 (patch) | |
tree | 9904e98bebe29520dd2720d93194f63f4e9f84c2 /src/jit/optimizer.cpp | |
parent | 342ba49767ebd256f1adf449b9cfd51de8e1d03f (diff) | |
parent | 86d4d5999267b687be6c404a3a998a9499f7a57f (diff) | |
download | coreclr-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.cpp | 21 |
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); } |