Skip to content

Unable to build v31.0 with clang-cl in c++20 debug build #21957

Open
@kon72

Description

@kon72

What version of protobuf and what language are you using?
Version: v31.0
Language: C++

What operating system (Linux, Windows, ...) and version?
Windows 11 (x86_64)

What runtime / compiler are you using (e.g., python version or gcc version)
clang-cl 20.1.5

What did you do?
Steps to reproduce the behavior:

  1. Build protobuf with Bazel

What did you expect to see
No error

What did you see instead?

ERROR: V:/tmp/bazel/uvsah77s/external/protobuf+/src/google/protobuf/BUILD.bazel:355:11: Compiling src/google/protobuf/port.cc failed: (Exit 1): clang-cl.exe failed: error executing CppCompile command (from target @@protobuf+//src/google/protobuf:port) 
  cd /d V:/tmp/bazel/uvsah77s/execroot/_main
  SET BAZEL_LLVM=C:\Users\kinse\scoop\apps\llvm\20.1.5
    SET INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\include;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.26100.0\\cppwinrt;C:\Users\kinse\scoop\apps\llvm\20.1.5\lib\clang\20\include
    SET PATH=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Team Tools\DiagnosticsHub\Collector;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\Extensions\Microsoft\CodeCoverage.Console;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\\x64;C:\Program Files (x86)\Windows Kits\10\bin\\x64;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\\MSBuild\Current\Bin\amd64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\;;C:\WINDOWS\system32;C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\VC\Linux\bin\ConnectionManagerExe
    SET PWD=/proc/self/cwd
    SET TEMP=C:\Users\kinse\AppData\Local\Temp
    SET TMP=C:\Users\kinse\AppData\Local\Temp
    SET VSLANG=1033
  C:\Users\kinse\scoop\apps\llvm\20.1.5\bin\clang-cl.exe @bazel-out/x64_windows-dbg/bin/external/protobuf+/src/google/protobuf/_objs/port/port.obj.params
# Configuration: 2f203f8b71bffd87944e565a8dcf56c50af0d65aacb4aa63e7d29b6c26d4806c
# Execution platform: //:windows_x86_64-clang-cl_platform
external/protobuf+/src/google/protobuf/port.cc(120,9): error: variable does not have a constant initializer
  120 |         fixed_address_empty_string{};
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
external/protobuf+/src/google/protobuf/port.cc(118,31): note: required by 'constinit' specifier here
  118 | PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
      |                               ^~~~~~~~~~~~~~~~~~
bazel-out/x64_windows-dbg/bin/external/protobuf+/src/google/protobuf/_virtual_includes/port\google/protobuf/port_def.inc(438,30): note: expanded from macro 'PROTOBUF_CONSTINIT'
  438 | #  define PROTOBUF_CONSTINIT constinit
      |                              ^~~~~~~~~
external/protobuf+/src/google/protobuf/port.cc(120,9): note: pointer to subobject of heap-allocated object is not a constant expression
  120 |         fixed_address_empty_string{};
      |         ^
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\include\xmemory(1220,59): note: heap allocation performed here
 1220 |         _Container_proxy* const _New_proxy = _Unfancy(_Al.allocate(1));
      |                                                           ^
1 error generated.

Anything else we should know about your project / environment

This errors only arises in c++20 debug build (-c dbg). Either non-debug build or c++17 results in successful build.

debug build non-debug build
/std:c++20 build failure ok
/std:c++17 ok ok

Similar issues:
#19975
#20645

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions