Skip to content

Inline assembly error: "requires more registers than available" with Clang 21.1.8 (strsm_kernel_LT.c.o build failure) #5641

@nicolarossi

Description

@nicolarossi

Hello,

I am encountering a build failure when compiling OpenBLAS with Clang 21.1.8, targeting SKYLAKE and using AddressSanitizer. The specific error occurs when building the strsm_kernel_LT.c.o target.

Steps to reproduce:

cmake -G Ninja -DCMAKE_CXX_COMPILER=/opt/clang-21.1.8/bin/clang++ -DTARGET=SKYLAKE -DCCOMMON_OPT="-fsanitize=address" ..
ninja -- kernel/CMakeFiles/kernel.dir/CMakeFiles/strsm_kernel_LT.c.o

Error message:

OpenBLAS/build_clang21/kernel/CMakeFiles/strsm_kernel_LT.c'
In file included from /home/[nicola.rossi@mavensecurities.com/fix_openmp_clang_ims/OpenBLAS/build_clang21/kernel/CMakeFiles/strsm_kernel_LT.c:9](http://nicola.rossi@mavensecurities.com/fix_openmp_clang_ims/OpenBLAS/build_clang21/kernel/CMakeFiles/strsm_kernel_LT.c:9):
/home/[nicola.rossi@mavensecurities.com/fix_openmp_clang_ims/OpenBLAS/kernel/x86_64/strsm_kernel_8x4_haswell_LT.c:221:32](http://nicola.rossi@mavensecurities.com/fix_openmp_clang_ims/OpenBLAS/kernel/x86_64/strsm_kernel_8x4_haswell_LT.c:221:32): error: inline assembly requires more registers than available
  221 |   for(;n_count>11;n_count-=12) COMPUTE(12)
      |                                ^
/home/[nicola.rossi@mavensecurities.com/fix_openmp_clang_ims/OpenBLAS/kernel/x86_64/strsm_kernel_8x4_haswell_LT.c:160:5](http://nicola.rossi@mavensecurities.com/fix_openmp_clang_ims/OpenBLAS/kernel/x86_64/strsm_kernel_8x4_haswell_LT.c:160:5): note: expanded from macro 'COMPUTE'
  160 |     "movq %0,%%r15; movq %1,%%r14; movq %7,%%r13; movq %6,%%r12; salq $2,%%r12; movq %10,%%r11;"

It appears that the inline assembly in strsm_kernel_8x4_haswell_LT.c is requesting more registers than are available when compiling with Clang 21 as C compiler and with AddressSanitizer enabled.

Additional information:

  • Compiler: Clang 21.1.8
  • AddressSanitizer enabled via -fsanitize=address
  • Target: HASWELL

Is there a known workaround or fix for this issue? Any advice for making this kernel build successfully with ASan enabled would be much appreciated.

Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions