Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fuzzlyn: Assertion failed 'interval->physReg == srcRegNum || (srcRegNum == REG_STK && interval->physReg == REG_NA)' during 'LSRA allocate' #107841

Closed
amanasifkhalid opened this issue Sep 15, 2024 · 3 comments · Fixed by #109173
Assignees
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI in-pr There is an active PR which will close this issue when it is merged
Milestone

Comments

@amanasifkhalid
Copy link
Member

(This is the reduced repro)

// Generated by Fuzzlyn v2.4 on 2024-09-15 18:26:14
// Run on Arm Linux
// Seed: 814129770620443258
// Reduced from 1176.3 KiB to 17.8 KiB in 01:20:31
// Hits JIT assert in Release:
// Assertion failed 'interval->physReg == srcRegNum || (srcRegNum == REG_STK && interval->physReg == REG_NA)' in 'Program:M137(C1,byref)' during 'LSRA allocate' (IL size 8520; hash 0xe0f64a46; FullOpts)
// 
//     File: /__w/1/s/src/coreclr/jit/lsra.cpp Line: 12573
// 
using System;

public interface I0
{
}

public interface I1
{
}

public class C0 : I1
{
    public ushort F0;
    public double F1;
    public uint F3;
    public ulong F4;
    public bool F5;
    public bool F6;
    public uint F7;
    public C0(double f1, double f2, float f8)
    {
    }
}

public struct S0
{
    public bool F0;
    public ulong F1;
    public C0 F2;
    public bool F3;
    public int F4;
    public long F5;
    public C0 F6;
    public uint F7;
    public sbyte F8;
    public int F9;
    public S0(C0 f2, bool f3, C0 f6, int f9) : this()
    {
    }
}

public class C1 : I1
{
    public short F0;
    public int F2;
    public sbyte F3;
    public int F4;
    public ushort F5;
    public sbyte F6;
    public short F7;
    public C1(float f1)
    {
    }
}

public struct S1 : I1
{
    public long F1;
    public S0 F2;
    public float F3;
    public S1(float f0, long f1, S0 f2, float f3) : this()
    {
    }
}

public class Program
{
    public static IRuntime s_rt;
    public static C0[] s_2;
    public static S1 s_4;
    public static double[][][][] s_7;
    public static I0 s_8;
    public static short[][] s_9;
    public static S0[, ] s_17;
    public static float[] s_26;
    public static C1[] s_29;
    public static bool s_33;
    public static S0 s_42;
    public static I0 s_43;
    public static S1 s_48;
    public static S1[] s_59;
    public static S0[,, ] s_66;
    public static S1 s_68;
    public static S1 s_71;
    public static S0 s_78;
    public static I0 s_85;
    public static I0 s_95;
    public static S0 s_101;
    public static I0 s_107;
    public static I0 s_111;
    public static I0[] s_112;
    public static S1[,, ][, ][][] s_113;
    public static S1 s_120;
    public static S0 s_127;
    public static C1 s_128;
    public static S0 s_135;
    public static C0 s_141;
    public static ulong s_143;
    public static S1 s_149;
    public static void Main()
    {
        CollectibleALC alc = new CollectibleALC();
        System.Reflection.Assembly asm = alc.LoadFromAssemblyPath(System.Reflection.Assembly.GetExecutingAssembly().Location);
        System.Reflection.MethodInfo mi = asm.GetType(typeof(Program).FullName).GetMethod(nameof(MainInner));
        System.Type runtimeTy = asm.GetType(typeof(Runtime).FullName);
        mi.Invoke(null, new object[] { System.Activator.CreateInstance(runtimeTy) });
    }

    public static void MainInner(IRuntime rt)
    {
        var vr54 = new C1(0);
        M137(vr54, ref s_26);
    }

    public static bool M140(C0 argThis, S1[, ] arg0, double arg1, ref double[][] arg2)
    {
        return default(bool);
    }

    public static C0 M143()
    {
        return default(C0);
    }

    public static S1[, ] M144()
    {
        return default(S1[, ]);
    }

    public static S0 M142(S0 argThis, ref S0 arg0, S1 arg1, S1 arg2, ref I0 arg3, ref ulong arg4)
    {
        return default(S0);
    }

    public static void M137(C1 argThis, ref float[] arg1)
    {
        double[] var0 = default(double[]);
        S0 var14 = default(S0);
        C1 var20 = default(C1);
        bool[][] var28 = default(bool[][]);
        byte var31 = default(byte);
        byte[] var35 = default(byte[]);
        S1 var36 = default(S1);
        long var37 = default(long);
        if (s_17[0, 0].F3)
        {
            if (s_113[0, 0, 0][0, 0][0][0].F2.F2.F5)
            {
                if (s_78.F2.F6)
                {
                    s_48.F3 = arg1[0]--;
                    return;
                }
                else
                {
                    s_68.F2 = new S0(new C0(0, 0, 3.4028235E+38f), true, new C0(0, 0, 0), 0);
                }

                var vr3 = s_4.F2.F2;
                var vr26 = new S1[, ]
                {
                    {
                        new S1(0, 0, new S0(new C0(1.7976931348623157E+308d, 0, 0), false, new C0(0, 0, 0), 0), 0)
                    },
                    {
                        new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 3.4028235E+38f), 0), 0)
                    },
                    {
                        new S1(0, 0, new S0(new C0(0, 0, -3.4028235E+38f), false, new C0(0, 0, 0), 0), 0)
                    },
                    {
                        new S1(0, 0, new S0(new C0(0, 1, 0), false, new C0(0, 0, -3.4028235E+38f), 0), 3.4028235E+38f)
                    },
                    {
                        new S1(0, 0, new S0(new C0(1, 1, 0), true, new C0(0, 1, 0), 0), 0)
                    }
                };
                var vr33 = var0[0]++;
                bool vr44 = M140(vr3, vr26, vr33, ref s_7[0][0]);
            }

            C0 var9 = new C0(0, 0, 0);
            s_rt.WriteLine("c_5143", 0);
            s_rt.WriteLine("c_5144", var9.F0);
            s_rt.WriteLine("c_5147", var9.F3);
            s_rt.WriteLine("c_5148", var9.F4);
            s_rt.WriteLine("c_5149", var9.F5);
            s_rt.WriteLine("c_5150", var9.F6);
            s_rt.WriteLine("c_5151", var9.F7);
            for (int var11 = 0; var11 < 2; var11++)
            {
                var vr13 = new S0(new C0(0, -1.7976931348623157E+308d, 0), false, new C0(0, 1, 0), 0);
                var vr15 = new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0);
                var vr24 = s_113[0, 0, 0][0, 0][0][0];
                M142(vr13, ref s_48.F2, vr15, vr24, ref s_111, ref s_2[0].F4);
            }

            int var12 = 0;
            s_rt.WriteLine("c_5162", var12);
            var vr6 = s_17[0, 0];
            M142(vr6, ref s_66[0, 0, 0], new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0), s_71, ref s_8, ref s_42.F6.F4);
        }
        else
        {
            var vr4 = new C0(1.7976931348623157E+308d, 1, 0);
            C0 vr56 = default(C0);
            var vr7 = new S1[, ]
            {
                {
                    new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0),
                    new S1(0, 0, new S0(new C0(-1.7976931348623157E+308d, 0, 0), true, new C0(0, 0, -3.4028235E+38f), 0), 0),
                    new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0)
                },
                {
                    new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0),
                    new S1(0, 0, new S0(new C0(0, 0, 3.4028235E+38f), false, new C0(0, 0, 0), 0), 0),
                    new S1(3.4028235E+38f, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0)
                }
            };
            var vr16 = s_68.F2.F6.F1;
            M140(vr56, vr7, vr16, ref s_7[0][0]);
            s_rt.WriteLine("c_5174", var14.F0);
            s_rt.WriteLine("c_5175", var14.F1);
            s_rt.WriteLine("c_5176", var14.F2.F0);
            s_rt.WriteLine("c_5179", var14.F2.F3);
            s_rt.WriteLine("c_5180", var14.F2.F4);
            s_rt.WriteLine("c_5181", var14.F2.F5);
            s_rt.WriteLine("c_5183", var14.F2.F7);
            s_rt.WriteLine("c_5195", var14.F6.F7);
            s_rt.WriteLine("c_5199", var14.F9);
        }

        argThis.F6 = (sbyte)s_78.F5--;
        var vr21 = new C0(0, 0, 0);
        var vr28 = new S1[, ]
        {
            {
                new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0),
                new S1(0, 0, new S0(new C0(1.7976931348623157E+308d, 0, 0), true, new C0(0, 0, 0), 0), 0),
                new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0),
                new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0)
            }
        };
        C0 vr64 = default(C0);
        C0 vr65 = vr21;
        bool vr69 = default(bool);
        var vr5 = new S0(new C0(0, 0, 3.4028235E+38f), vr69, vr64, argThis.F2);
        var vr32 = new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0);
        if (M141(argThis))
        {
            var vr17 = new S1[, ]
            {
                {
                    new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 3.4028235E+38f), 0), 0),
                    new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(1.7976931348623157E+308d, 0, 0), 0), 0),
                    new S1(-3.4028235E+38f, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0),
                    new S1(0, 0, new S0(new C0(0, 1.7976931348623157E+308d, 0), true, new C0(0, 0, 0), 0), 0),
                    new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), -3.4028235E+38f),
                    new S1(-3.4028235E+38f, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0)
                }
            };
            if (s_33)
            {
                I1[] var18 = new I1[]
                {
                    new C0(0, 0, 0),
                    new C1(0),
                    new C1(3.4028235E+38f),
                    new C0(0, 0, 0),
                    new C1(3.4028235E+38f),
                    new S1(0, -8736734971933627417L, new S0(new C0(1.7976931348623157E+308d, 0, 0), false, new C0(0, 0, 0), 523515085), -3.4028235E+38f),
                    new C0(0, 0, 0),
                    new C1(-3.4028235E+38f),
                    new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 1), 0)
                };
            }
            else
            {
                var vr12 = new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0);
                var vr34 = new S1(0, 0, new S0(new C0(1.7976931348623157E+308d, 0, 0), true, new C0(0, 0, 0), 0), 0);
                var vr8 = M142(vr12, ref s_113[0, 0, 0][0, 0][0][0].F2, vr34, new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0), ref s_43, ref s_68.F2.F6.F4);
                var vr20 = new S0(new C0(0, 0, 3.4028235E+38f), true, new C0(0, 0, 0), 0);
                var vr40 = new C1(0);
                var vr42 = new S0(new C0(0, 0, -3.4028235E+38f), true, new C0(0, 0, 0), 0);
                try
                {
                    s_9 = s_9;
                }
                finally
                {
                    s_rt.WriteLine("c_5201", var20.F0);
                    s_rt.WriteLine("c_5203", var20.F2);
                    s_rt.WriteLine("c_5204", var20.F3);
                    s_rt.WriteLine("c_5205", var20.F4);
                    s_rt.WriteLine("c_5206", var20.F5);
                    s_rt.WriteLine("c_5208", var20.F7);
                }

                S0 var21 = s_59[0].F2;
                var21.F2.F0 = s_48.F2.F6.F0++;
                s_rt.WriteLine("c_5210", var21.F0);
                s_rt.WriteLine("c_5211", var21.F1);
                s_rt.WriteLine("c_5216", var21.F2.F4);
                s_rt.WriteLine("c_5217", var21.F2.F5);
                s_rt.WriteLine("c_5218", var21.F2.F6);
                s_rt.WriteLine("c_5219", var21.F2.F7);
                s_rt.WriteLine("c_5221", var21.F3);
                s_rt.WriteLine("c_5223", var21.F5);
                s_rt.WriteLine("c_5229", var21.F6.F5);
                s_rt.WriteLine("c_5230", var21.F6.F6);
                s_rt.WriteLine("c_5233", var21.F7);
                s_rt.WriteLine("c_5234", var21.F8);
            }

            s_7[0][0][0][0] = var0[0]--;
            var vr38 = new S0(new C0(0, 1.7976931348623157E+308d, 0), true, new C0(0, 0, 0), 0);
            var vr39 = s_59[0];
            var vr35 = M142(vr38, ref s_101, new S1(0, -7153361952214254310L, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0), vr39, ref s_85, ref s_17[0, 0].F1);
            M142(vr35, ref s_66[0, 0, 0], new S1(0, -7210483454585770996L, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 1), 0), new S1(0, 2810699383726706373L, new S0(new C0(0, 0, 0), true, new C0(0, 1.7976931348623157E+308d, 0), 2147483646), 0), ref s_111, ref s_68.F2.F1);
            I1[, ] var23 = new I1[, ]
            {
                {
                    new C1(0),
                    new C0(0, 0, 0),
                    new S1(-3.4028235E+38f, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 3.4028235E+38f), 0), 3.4028235E+38f),
                    new C0(0, 0, 0),
                    new C0(0, 0, 0),
                    new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0),
                    new C0(0, 0, 0),
                    new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 3.4028235E+38f), 0), 0),
                    new C1(0),
                    new C1(0)
                },
                {
                    new C1(3.4028235E+38f),
                    new C0(0, 0, 0),
                    new C1(0),
                    new C0(0, 0, 0),
                    new C0(0, 0, 0),
                    new C1(0),
                    new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0),
                    new C1(3.4028235E+38f),
                    new C0(0, 0, 0),
                    new C0(0, 0, 0)
                }
            };
        }

        C1 var25 = s_128;
        C1 var26 = new C1(0);
        M142(s_42, ref s_135, new S1(0, 725286118131275146L, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0), new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0), ref s_112[0], ref s_17[0, 0].F1);
        var vr41 = new S0(new C0(0, 0, 0), true, new C0(0, 0, 3.4028235E+38f), 0);
        bool vr0 = s_120.F2.F6.F4-- < var0[0];
        var vr10 = new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0);
        var vr30 = new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0), 0);
        M142(vr10, ref s_101, vr30, new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 1, 3.4028235E+38f), 0), 0), ref s_95, ref s_141.F4);
        s_rt.WriteLine("c_5240", var28[0][0]);
        var vr45 = s_29[0];
        var vr46 = new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0);
        if (M141(vr45))
        {
            var vr19 = new S0(new C0(0, 0, 3.4028235E+38f), true, new C0(0, 0, 0), 0);
            s_rt.WriteLine("c_5243", var31);
            var vr23 = new S0(new C0(0, 0, 0), true, new C0(0, 0, 0), 0);
        }

        C1 var32 = new C1(0);
        byte[] var34 = new byte[]
        {
            1
        };
        s_rt.WriteLine("c_5406", var35[0]);
        var vr47 = s_149.F2.F2.F3++;
        s_rt.WriteLine("c_5409", var36.F2.F0);
        s_rt.WriteLine("c_5411", var36.F2.F2.F0);
        s_rt.WriteLine("c_5414", var36.F2.F2.F3);
        s_rt.WriteLine("c_5415", var36.F2.F2.F4);
        s_rt.WriteLine("c_5416", var36.F2.F2.F5);
        s_rt.WriteLine("c_5417", var36.F2.F2.F6);
        s_rt.WriteLine("c_5420", var36.F2.F3);
        s_rt.WriteLine("c_5422", var36.F2.F5);
        s_rt.WriteLine("c_5426", var36.F2.F6.F3);
        s_rt.WriteLine("c_5427", var36.F2.F6.F4);
        s_rt.WriteLine("c_5430", var36.F2.F6.F7);
        s_rt.WriteLine("c_5432", var36.F2.F7);
        s_rt.WriteLine("c_5433", var36.F2.F8);
        s_rt.WriteLine("c_5434", var36.F2.F9);
        s_rt.WriteLine("c_5435", System.BitConverter.SingleToUInt32Bits(var36.F3));
        var vr48 = s_149.F2;
        M142(vr48, ref s_149.F2, s_71, new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, -3.4028235E+38f), 0), 0), ref s_85, ref s_149.F2.F6.F4);
        s_rt.WriteLine("c_5437", s_149.F1);
        s_rt.WriteLine("c_5438", s_149.F2.F0);
        s_rt.WriteLine("c_5439", s_149.F2.F1);
        s_rt.WriteLine("c_5444", s_149.F2.F2.F4);
        s_rt.WriteLine("c_5449", s_149.F2.F3);
        s_rt.WriteLine("c_5450", s_149.F2.F4);
        s_rt.WriteLine("c_5452", s_149.F2.F6.F0);
        s_rt.WriteLine("c_5455", s_149.F2.F6.F3);
        s_rt.WriteLine("c_5456", s_149.F2.F6.F4);
        s_rt.WriteLine("c_5457", s_149.F2.F6.F5);
        s_rt.WriteLine("c_5459", s_149.F2.F6.F7);
        s_rt.WriteLine("c_5461", s_149.F2.F7);
        s_rt.WriteLine("c_5462", s_149.F2.F8);
        s_rt.WriteLine("c_5465", var34[0]);
        s_rt.WriteLine("c_5466", var37);
        s_rt.WriteLine("c_5468", var25.F0);
        s_rt.WriteLine("c_5470", var25.F2);
        s_rt.WriteLine("c_5471", var25.F3);
        s_rt.WriteLine("c_5472", var25.F4);
        s_rt.WriteLine("c_5473", var25.F5);
        s_rt.WriteLine("c_5478", var26.F2);
        s_rt.WriteLine("c_5479", var26.F3);
        s_rt.WriteLine("c_5480", var26.F4);
        s_rt.WriteLine("c_5481", var26.F5);
        s_rt.WriteLine("c_5482", var26.F6);
        s_rt.WriteLine("c_5483", var26.F7);
        s_rt.WriteLine("c_5486", var32.F2);
        s_rt.WriteLine("c_5488", var32.F4);
        var vr49 = new S1(0, 0, new S0(new C0(0, 0, 0), true, new C0(0, 0, -3.4028235E+38f), 0), -3.4028235E+38f);
        for (int var39 = 0; var39 < -1; var39++)
        {
            var vr9 = M143();
            var vr29 = M144();
            if (M140(vr9, vr29, 0, ref s_7[0][0]))
            {
                var vr27 = s_120.F2;
                var vr36 = s_59[0];
                S0 vr57 = vr27;
                S0 vr58 = s_127;
                S1 vr59 = vr36;
                S0 vr63 = default(S0);
                var vr37 = s_59[0];
                var vr14 = M142(vr63, ref s_101, new S1(-3.4028235E+38f, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), 0), vr37, ref s_85, ref s_68.F2.F1);
                var vr43 = new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 0), -3.4028235E+38f);
                M142(vr14, ref s_127, vr43, new S1(0, 0, new S0(new C0(0, 0, 0), false, new C0(0, 0, 0), 1), 3.4028235E+38f), ref s_107, ref s_143);
            }
        }
    }

    public static bool M141(C1 argThis)
    {
        return default(bool);
    }
}

public interface IRuntime
{
    void WriteLine<T>(string site, T value);
}

public class Runtime : IRuntime
{
    public void WriteLine<T>(string site, T value) => System.Console.WriteLine(value);
}

public class CollectibleALC : System.Runtime.Loader.AssemblyLoadContext
{
    public CollectibleALC() : base(true)
    {
    }
}

cc @dotnet/jit-contrib

@amanasifkhalid amanasifkhalid added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Sep 15, 2024
@amanasifkhalid amanasifkhalid added this to the 9.0.0 milestone Sep 15, 2024
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@kunalspathak
Copy link
Member

This is another one exposed from #107714. Marking as 10.0

@kunalspathak kunalspathak modified the milestones: 9.0.0, 10.0.0 Sep 16, 2024
@kunalspathak kunalspathak self-assigned this Sep 16, 2024
@kunalspathak
Copy link
Member

This is another one exposed from #107714. Marking as 10.0

I confirmed that the recent fixes in #107714 and #107493 is exposing these problems. In this example, the symptoms are slightly different. Here is what we want to resolve.

 V645: f18 -> f16 (float)
 V646: f19 -> f17 (float)
 V642: f16 -> f18 (double)

So, basically, in current block, value of V645 is in f18 but we want it to be in f16 in successor block, so we need to add a resolution of moving f18 to f16 at the end of source block. Given all the resolution needed, ideal resolution should look something like this (in that order):

a. V642: f16 -> f0 (f0 is a temporary resolution register)
b. V645: f18 -> f16
c. V646: f19 -> f17
d. V642: f0 -> f18

First, we free up f16, however, since it held double V642, we also want to free up f17. Next, we move f18 -> f16 (float V645) and f19 -> f17 (float V646) because both are float. Lastly, we move the value of double V42 from f0 -> f18.

Before my prior fixes in #107714 and #107493, we would do the following resolution:

a. V646: f19 -> f17 (overwritten upper half of V642)
b. V642: f16 -> f0
c. V645: f18 -> f16
d. V642: f0 -> f18

As we see here, we first resolve V646 by moving f19 -> f17. However, since f16/f17 was holding double V642, we have just overwritten the upper half of V642, which is wrong. Further resolutions do not fix the problem and we end up scrambling the values held in registers.

My fix in #107714 and #107493, basically tries to prohibit such situation by and exposed these bugs:

  • Make sure that any register which is the final target of resolution move is not marked as ready to take resolution if the other half held DOUBLE interval and has not completed the move.
  • If a DOUBLE interval did the resolution (either using temporary resolution register or by final resolution), we will make sure that the other half is also freed up to take the resolution.

@dotnet-policy-service dotnet-policy-service bot added the in-pr There is an active PR which will close this issue when it is merged label Sep 17, 2024
@github-actions github-actions bot locked and limited conversation to collaborators Nov 29, 2024
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 in-pr There is an active PR which will close this issue when it is merged
Projects
None yet
2 participants