Skip to content

Fix propagation of basic block flags for inlinee return expressions. - #37840

Merged
erozenfeld merged 1 commit into
dotnet:masterfrom
erozenfeld:Fix37574
Jun 15, 2020
Merged

Fix propagation of basic block flags for inlinee return expressions.#37840
erozenfeld merged 1 commit into
dotnet:masterfrom
erozenfeld:Fix37574

Conversation

@erozenfeld

Copy link
Copy Markdown
Contributor

#37335 introduced a new more precise way of propagating basic
block flags from inlinee return expressions. The assumption there
was that fgUpdateInlineReturnExpressionPlaceHolder is the only
place where GT_RET_EXPR's are replaced with the actual nodes
from inlinees. That assumption was incorrect and this change fixes
the remaining places.

Fixes#37574.

@Dotnet-GitSync-BotDotnet-GitSync-Bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jun 13, 2020
@erozenfeld

Copy link
Copy Markdown
ContributorAuthor

No diffs in x64 pmi framewors and benchmarks.

@erozenfeld

Copy link
Copy Markdown
ContributorAuthor

@dotnet/jit-contrib @AndyAyersMS PTAL

@AndyAyersMSAndyAyersMS left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I owe you an apology -- when I looked at your first fix for this I thought to ask if you handled the ret expr tunneling, but didn't. Sorry about that.

Comment threadsrc/coreclr/src/jit/inline.h Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I'd place this field first to minimize the amount of padding we might end up with here.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, done.

@erozenfeld
erozenfeldforce-pushed the Fix37574 branch 2 times, most recently from 94b2c4e to f0128d0CompareJune 13, 2020 06:22
block flags from inlinee return expressions. The assumption there
was that `fgUpdateInlineReturnExpressionPlaceHolder` is the only
place where `GT_RET_EXPR`'s are replaced with the actual nodes
from inlinees. That assumption was incorrect and this change fixes
the remaining places.
Fixesdotnet#37574.
@erozenfeld
erozenfeld merged commit a96a64e into dotnet:masterJun 15, 2020
erozenfeld added a commit to erozenfeld/runtime that referenced this pull request Jun 22, 2020
This is a fllow-up to dotnet#37335 and dotnet#37840.
When an inline fails we replace `GT_RET_EXPR`with the
original `GT_CALL` node. `GT_RET_EXPR`may end up in
a basic block other than the original `GT_CALL` so we need
to propagate basic block flags.
Fixesdotnet#36588.
erozenfeld added a commit that referenced this pull request Jun 23, 2020
This is a fllow-up to #37335 and #37840.
When an inline fails we replace `GT_RET_EXPR`with the
original `GT_CALL` node. `GT_RET_EXPR`may end up in
a basic block other than the original `GT_CALL` so we need
to propagate basic block flags.
Fixes#36588.
@ghostghost locked as resolved and limited conversation to collaborators Dec 8, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test failure: JIT/Performance/CodeQuality/BenchmarksGame/reverse-complement/reverse-complement-1/reverse-complement-1.sh

3 participants

@erozenfeld@AndyAyersMS@Dotnet-GitSync-Bot