Issue 123946
Summary va_start doesn't like precompiled headers
Labels new issue
Assignees
Reporter Alcaro
    ```
cmake_minimum_required(VERSION 3.16)
project(jnipch)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_COMPILER clang++-19)
set(CMAKE_CXX_FLAGS -stdlib=libc++)

file(WRITE "pch.h" "
#include <functional>
")
file(WRITE "main.cpp" "
#include <stdarg.h>

void NewObject(int arg, ...) {
    va_list args;
 va_start(args, arg);
    va_end(args);
}
")

add_library(jnipch SHARED main.cpp)
target_precompile_headers(jnipch PRIVATE "pch.h")
```

Expected: Compile properly

Actual:
```
[ 33%] Building CXX object CMakeFiles/jnipch.dir/cmake_pch.hxx.pch
[ 66%] Building CXX object CMakeFiles/jnipch.dir/main.cpp.o
main.cpp:5:14: error: cannot initialize a parameter of type '__va_list_tag *' with an lvalue of type 'va_list' (aka '__va_list_tag[1]')
    5 |     va_start(args, arg);
      | ^~~~
/opt/compiler-explorer/clang-19.1.0/lib/clang/19/include/__stdarg_va_arg.h:17:48: note: expanded from macro 'va_start'
   17 | #define va_start(ap, param) __builtin_va_start(ap, param)
      | ^~
main.cpp:6:12: error: cannot initialize a parameter of type '__va_list_tag *' with an lvalue of type 'va_list' (aka '__va_list_tag[1]')
 6 |     va_end(args);
      | ^~~~
/opt/compiler-explorer/clang-19.1.0/lib/clang/19/include/__stdarg_va_arg.h:19:37: note: expanded from macro 'va_end'
   19 | #define va_end(ap) __builtin_va_end(ap)
      |                                     ^~
2 errors generated.
```

https://godbolt.org/z/9vzoEabPj
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to