[clang] [llvm] [Clang] Fix assertion failure when passing wide string literal to __builtin_nanf (PR #205452)

Aaron Ballman via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 30 08:14:48 PDT 2026


AaronBallman wrote:

Precommit CI found relevant failures:
```
  FAIL: Clang :: Sema/builtin-nan-wide-string.c (24769 of 24994)
  ******************** TEST 'Clang :: Sema/builtin-nan-wide-string.c' FAILED ********************
  Exit Code: 1
  
  Command Output (stdout):
  --
  # RUN: at line 1
  c:\_work\llvm-project\llvm-project\build\bin\clang.exe -cc1 -internal-isystem C:\_work\llvm-project\llvm-project\build\lib\clang\23\include -nostdsysteminc -fsyntax-only -verify=c -x c C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c
  # executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang.exe' -cc1 -internal-isystem 'C:\_work\llvm-project\llvm-project\build\lib\clang\23\include' -nostdsysteminc -fsyntax-only -verify=c -x c 'C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c'
  # .---command stderr------------
  # | error: 'c-error' diagnostics seen but not expected: 
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 12: incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 12: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 16: incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 16: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 20: incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 20: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 24: incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 24: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 28: incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 28: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 32: incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 32: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 36: incompatible pointer types passing 'unsigned int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 36: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 40: incompatible pointer types passing 'unsigned int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 40: initializer element is not a compile-time constant
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 44: incompatible pointer types passing 'unsigned int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 44: initializer element is not a compile-time constant
  # | error: 'c-warning' diagnostics expected but not seen: 
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 12 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:13): incompatible pointer types passing 'int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 16 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:17): incompatible pointer types passing 'int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 20 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:21): incompatible pointer types passing 'int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 24 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:25): incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 28 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:29): incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 32 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:33): incompatible pointer types passing 'unsigned short[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 36 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:37): incompatible pointer types passing 'unsigned int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 40 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:41): incompatible pointer types passing 'unsigned int[1]' to parameter of type 'const char *'
  # |   File C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c Line 44 (directive at C:\_work\llvm-project\llvm-project\clang\test\Sema\builtin-nan-wide-string.c:45): incompatible pointer types passing 'unsigned int[1]' to parameter of type 'const char *'
  # | 27 errors generated.
  # `-----------------------------
  # error: command failed with exit status: 1
  
  --
  
  ********************
```

https://github.com/llvm/llvm-project/pull/205452


More information about the llvm-commits mailing list