Skip to content

[clang][CodeGen][PowerPC] Loading an _Atomic long double on ppc64le asserts in AtomicInfo::ConvertToValueOrAtomic (ppc_fp128 is not "IEEE-like") #239928

Open

Description

@YuanchengJiang

The following code:

long double test(_Atomic long double *addr) { return *addr; }

Resulted in this output:

clang: /root/llvm-project/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp:1574: clang::CodeGen::RValue {anonymous}::AtomicInfo::ConvertToValueOrAtomic(llvm::Value*, clang::CodeGen::AggValueSlot, clang::SourceLocation, bool, bool) const: Assertion `(Val->getType()->isIntegerTy() || Val->getType()->isPointerTy() || Val->getType()->isIEEELikeFPTy()) && "Expected integer, pointer or floating point value when converting " "result."' failed.

Trunk reproducer (-emit-llvm --target=powerpc64le-unknown-linux-gnu): https://godbolt.org/z/EKxz7rT4e

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 long double test(_Atomic long double *addr) { return *addr; } ```

    Resulted in this output:

    clang: /root/llvm-project/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp:1574: clang::CodeGen::RValue {anonymous}::AtomicInfo::ConvertToValueOrAtomic(llvm::Value*, clang::CodeGen::AggValueSlot, clang::SourceLocation, bool, bool) const: Assertion `(Val->getType()->isIntegerTy() || Val->getType()->isPointerTy() || Val->getType()->isIEEELikeFPTy()) && "Expected integer, pointer or floating point value when converting " "result."' failed.
    

    Trunk reproducer (-emit-llvm --target=powerpc64le-unknown-linux-gnu): https://godbolt.org/z/EKxz7rT4e

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

    @llvmorg-github-actions

    @llvm/issue-subscribers-backend-powerpc

    Author: Jiang Yuancheng (YuanchengJiang)

    Details The following code: ```c long double test(_Atomic long double *addr) { return *addr; } ```

    Resulted in this output:

    clang: /root/llvm-project/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp:1574: clang::CodeGen::RValue {anonymous}::AtomicInfo::ConvertToValueOrAtomic(llvm::Value*, clang::CodeGen::AggValueSlot, clang::SourceLocation, bool, bool) const: Assertion `(Val->getType()->isIntegerTy() || Val->getType()->isPointerTy() || Val->getType()->isIEEELikeFPTy()) && "Expected integer, pointer or floating point value when converting " "result."' failed.
    

    Trunk reproducer (-emit-llvm --target=powerpc64le-unknown-linux-gnu): https://godbolt.org/z/EKxz7rT4e

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:PowerPCclang: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