Skip to content

JIT: Assertion failed 'retbufArg->GetNode()->OperIs(GT_LCL_ADDR)' during 'Transform async' #115884

@jakobbotsch

Description

@jakobbotsch
// Generated by Fuzzlyn v3.1 on 2025-05-22 09:42:39
// Run on X64 Windows
// Seed: 6984090233826610634-async,runtimeasync,vectort,vector128,vector256,x86aes,x86avx,x86avx2,x86bmi1,x86bmi1x64,x86bmi2,x86bmi2x64,x86fma,x86lzcnt,x86lzcntx64,x86pclmulqdq,x86pclmulqdqv256,x86popcnt,x86popcntx64,x86sse,x86ssex64,x86sse2,x86sse2x64,x86sse3,x86sse41,x86sse41x64,x86sse42,x86sse42x64,x86ssse3,x86x86base
// Reduced from 33.9 KiB to 1.8 KiB in 00:02:34
// Hits JIT assert for Release with Runtime Async:
// Assertion failed 'retbufArg->GetNode()->OperIs(GT_LCL_ADDR)' in 'Program:M1(System.Numerics.Vector`1[long],short):ubyte' during 'Transform async' (IL size 31; hash 0xc52b4eb4; FullOpts)
//
//     File: C:\dev\dotnet\runtime3\src\coreclr\jit\async.cpp Line: 816
//
using System;
using System.Numerics;
using System.Threading.Tasks;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;

public class Program
{
    public static IRuntime s_rt;
    public static bool s_1;
    public static void Main()
    {
        s_rt = new Runtime();
        byte vr4 = default(byte);
        var vr5 = M2(vr4).GetAwaiter().GetResult();
        bool vr6 = M1(vr5, 0).GetAwaiter().GetResult();
    }

    public static async Task<bool> M1(Vector<long> arg0, short arg1)
    {
        var vr3 = Vector128.Create<uint>(0);
        var vr2 = (byte)Sse41.Extract(vr3, 0);
        arg0 = await M2(vr2);
        return s_1;
    }

    public static async Task<Vector<long>> M2(byte arg0)
    {
        s_rt.WriteLine(arg0);
        return Vector128.CreateScalar(-8624796445725177429L).AsVector();
    }

    public static sbyte[][] M8()
    {
        return new sbyte[][]
        {
            new sbyte[]
            {
                0
            },
            new sbyte[]
            {
                0,
                0,
                1,
                1,
                1
            },
            new sbyte[]
            {
                0
            },
            new sbyte[]
            {
                0
            },
            new sbyte[]
            {
                0
            },
            new sbyte[]
            {
                0
            },
            new sbyte[]
            {
                0
            },
            new sbyte[]
            {
                0
            }
        };
    }
}

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

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

Metadata

Metadata

Assignees

Labels

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

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions