Skip to content

[clang][CodeGen] __atomic_always_lock_free with a non-constant size asserts on ARM (HasExtraArg) and RISC-V ("unexpected builtin ID") #239930

Open

Description

@YuanchengJiang

The following code:

void f(unsigned long size, void *ptr) { __atomic_always_lock_free(size, ptr); }

Resulted in this output:

clang: /root/llvm-project/llvm/tools/clang/lib/CodeGen/TargetBuiltins/ARM.cpp:2702: llvm::Value* clang::CodeGen::CodeGenFunction::EmitARMBuiltinExpr(unsigned int, const clang::CallExpr*, clang::CodeGen::ReturnValueSlot, llvm::Triple::ArchType): Assertion `HasExtraArg' failed.

Trunk reproducer (--target=armv7-none-eabi): https://godbolt.org/z/nacd531az

Activity

  1. added
    clang:codegenIR generation bugs: mangling, exceptions, etc.
    crashPrefer [crash-on-valid] or [crash-on-invalid]
    generated by fuzzerRegression test generated by fuzzing or AI analysis - not a real world code snippet
    on Nov 7, 2026
  2. llvmorg-github-actions commented on Nov 7, 2026

    @llvmorg-github-actions

    @llvm/issue-subscribers-clang-codegen

    Author: Jiang Yuancheng (YuanchengJiang)

    Details The following code: ```c void f(unsigned long size, void *ptr) { __atomic_always_lock_free(size, ptr); } ```

    Resulted in this output:

    clang: /root/llvm-project/llvm/tools/clang/lib/CodeGen/TargetBuiltins/ARM.cpp:2702: llvm::Value* clang::CodeGen::CodeGenFunction::EmitARMBuiltinExpr(unsigned int, const clang::CallExpr*, clang::CodeGen::ReturnValueSlot, llvm::Triple::ArchType): Assertion `HasExtraArg' failed.
    

    Trunk reproducer (--target=armv7-none-eabi): https://godbolt.org/z/nacd531az

  3. llvmorg-github-actions commented on Nov 7, 2026

    @llvmorg-github-actions

    @llvm/issue-subscribers-backend-arm

    Author: Jiang Yuancheng (YuanchengJiang)

    Details The following code: ```c void f(unsigned long size, void *ptr) { __atomic_always_lock_free(size, ptr); } ```

    Resulted in this output:

    clang: /root/llvm-project/llvm/tools/clang/lib/CodeGen/TargetBuiltins/ARM.cpp:2702: llvm::Value* clang::CodeGen::CodeGenFunction::EmitARMBuiltinExpr(unsigned int, const clang::CallExpr*, clang::CodeGen::ReturnValueSlot, llvm::Triple::ArchType): Assertion `HasExtraArg' failed.
    

    Trunk reproducer (--target=armv7-none-eabi): https://godbolt.org/z/nacd531az

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:ARMclang:codegenIR generation bugs: mangling, exceptions, etc.crashPrefer [crash-on-valid] or [crash-on-invalid]generated by fuzzerRegression test generated by fuzzing or AI analysis - not a real world code snippet

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions