Skip to content

Conversation

@AndyAyersMS
Copy link
Member

Follow-up from #1788.

Also remove an arm-only handle block that should now be redundant.

Follow-up from dotnet#1788.

Also remove an arm-only handle block that should now be redundant.
@AndyAyersMS
Copy link
Member Author

@briansull PTAL
cc @dotnet/jit-contrib

@AndyAyersMS
Copy link
Member Author

The newly added assert is firing. Will dig in and see why.

@briansull
Copy link
Contributor

There is a strange code sequence here, that may be relevant:

Assertionprop.cpp line 1341:


                /* iconFlags should only contain bits in GTF_ICON_HDL_MASK */
                assert((iconFlags & ~GTF_ICON_HDL_MASK) == 0);
                assertion.op2.u1.iconFlags = iconFlags;
#ifdef _TARGET_64BIT_
                if (op2->TypeGet() == TYP_LONG)
                {
                    assertion.op2.u1.iconFlags |= 1; // Signify that this is really TYP_LONG
                }
#endif // _TARGET_64BIT_

@jkotas jkotas added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 16, 2020
@AndyAyersMS
Copy link
Member Author

AndyAyersMS commented Jan 17, 2020

Hmm, I should have checked the assertion unions more carefully -- the iconFlags overlay the top part of the long value (on a 32 bit host), so once an assertion is created, there's no easy way to check if somebody has inadvertently set the icon flags.

I suppose in a debug build we could keep some extra state?

@AndyAyersMS
Copy link
Member Author

I suppose in a debug build we could keep some extra state?

Or perhaps just add padding to IntVal on 32 bits, so the icon flags aren't overlaying anything.

@briansull
Copy link
Contributor

These flags should not overlap. I would suggest that we fix that.

@AndyAyersMS
Copy link
Member Author

/AZP run runtime-coreclr outerloop

@azure-pipelines
Copy link

Azure Pipelines could not run because the pipeline triggers exclude this branch/path.

@AndyAyersMS
Copy link
Member Author

After adding padding, no hits from the new assert in inner or outer loop testing. The padding should not increase the size of the assertion records.

The one remaining failure is in the flaky-seeming trace event test.

Copy link
Contributor

@briansull briansull left a comment

Choose a reason for hiding this comment

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

Looks Good

break;

case O2K_CONST_LONG:
{
Copy link
Contributor

Choose a reason for hiding this comment

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

Don't really need the braces { } here.

Copy link
Contributor

@briansull briansull left a comment

Choose a reason for hiding this comment

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

I would add a break.

// so no handle bits should be set here.
assert((assertion->op2.u1.iconFlags & GTF_ICON_HDL_MASK) == 0);
}

Copy link
Contributor

Choose a reason for hiding this comment

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

Should have a break here

Copy link
Contributor

@briansull briansull left a comment

Choose a reason for hiding this comment

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

LGTM

@AndyAyersMS
Copy link
Member Author

Remaining failures are in the tracevent tests.

@AndyAyersMS AndyAyersMS merged commit c26a653 into dotnet:master Jan 21, 2020
@AndyAyersMS AndyAyersMS deleted the AssertionPropAssert branch January 21, 2020 16:08
@ghost ghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclr CLR 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.

3 participants