Skip to content

bail out in CMake when minimum required LLVM version is not satisfied #1741

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

firewave
Copy link
Contributor

refs #1740

Copy link

Informational: IWYU dogfood results

include-what-you-use (exit: 1)
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_ast_util.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_ast_util.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_cache.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_cache.cc
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu.cc:101:
In file included from /usr/lib/llvm-21/include/clang/AST/ASTContext.h:18:
In file included from /usr/lib/llvm-21/include/clang/AST/CanonicalType.h:17:
In file included from /usr/lib/llvm-21/include/clang/AST/Type.h:28:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_use_flags.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu.cc has correct #includes/fwd-decls)

In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_ast_util.cc:12:
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_ast_util.h:22:
In file included from /usr/lib/llvm-21/include/clang/AST/TemplateBase.h:20:
In file included from /usr/lib/llvm-21/include/clang/AST/Type.h:28:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_ast_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_use_flags.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_ast_util.cc has correct #includes/fwd-decls)

# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_driver.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_driver.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_getopt.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_getopt.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_globals.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_globals.cc
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_cache.cc:10:
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_cache.h:22:
In file included from /usr/lib/llvm-21/include/clang/AST/Type.h:28:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_cache.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_use_flags.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_cache.cc has correct #includes/fwd-decls)

In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_driver.cc:29:
In file included from /usr/lib/llvm-21/include/clang/Driver/Driver.h:20:
In file included from /usr/lib/llvm-21/include/clang/Driver/ToolChain.h:13:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_driver.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_driver.cc has correct #includes/fwd-decls)


(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_getopt.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_getopt.cc has correct #includes/fwd-decls)

# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_include_picker.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_lexer_utils.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_lexer_utils.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_location_util.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_location_util.cc
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_globals.cc:22:
In file included from /usr/lib/llvm-21/include/clang/AST/PrettyPrinter.h:17:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_globals.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_version.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_globals.cc has correct #includes/fwd-decls)

In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc:10:
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.h:54:
In file included from /usr/lib/llvm-21/include/clang/Basic/FileEntry.h:17:
In file included from /usr/lib/llvm-21/include/clang/Basic/CustomizableOptional.h:12:
In file included from /usr/lib/llvm-21/include/llvm/ADT/Hashing.h:53:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/algorithm:61:
In file included from /usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_algo.h:61:
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tempbuf.h:263:8: warning: 'get_temporary_buffer<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>>>' is deprecated [-Wdeprecated-declarations]
  263 |                 std::get_temporary_buffer<value_type>(_M_original_len));
      |                      ^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_algo.h:4996:15: note: in instantiation of member function 'std::_Temporary_buffer<__gnu_cxx::__normal_iterator<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>> *, std::vector<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>>>>, std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>>>::_Temporary_buffer' requested here
 4996 |       _TmpBuf __buf(__first, (__last - __first + 1) / 2);
      |               ^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_algo.h:5070:23: note: in instantiation of function template specialization 'std::__stable_sort<__gnu_cxx::__normal_iterator<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>> *, std::vector<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>>>>, __gnu_cxx::__ops::_Iter_comp_iter<(lambda at /home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc:1436:54)>>' requested here
 5070 |       _GLIBCXX_STD_A::__stable_sort(__first, __last,
      |                       ^
/home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc:1436:8: note: in instantiation of function template specialization 'std::stable_sort<__gnu_cxx::__normal_iterator<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>> *, std::vector<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>>>>, (lambda at /home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc:1436:54)>' requested here
 1436 |   std::stable_sort(mappings.begin(), mappings.end(), [](auto& lhs, auto& rhs) {
      |        ^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tempbuf.h:99:5: note: 'get_temporary_buffer<std::pair<std::basic_string<char>, std::vector<include_what_you_use::MappedInclude>>>' has been explicitly marked deprecated here
   99 |     _GLIBCXX17_DEPRECATED
      |     ^
/usr/lib/gcc/x86_64-linux-gnu/12/../../../../include/x86_64-linux-gnu/c++/12/bits/c++config.h:119:34: note: expanded from macro '_GLIBCXX17_DEPRECATED'
  119 | # define _GLIBCXX17_DEPRECATED [[__deprecated__]]
      |                                  ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

/home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc should add these lines:
#include <pstl/glue_algorithm_defs.h>                  // for find

/home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc should remove these lines:

The full include-list for /home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc:
#include "iwyu_include_picker.h"
#include <pstl/glue_algorithm_defs.h>                  // for find
#include <algorithm>                                   // for find, max_element
#include <cstddef>                                     // for size_t
#include <map>                                         // for map, operator!=
#include <memory>                                      // for unique_ptr
#include <numeric>                                     // for accumulate
#include <string>                                      // for basic_string
#include <system_error>                                // for error_code
#include <utility>                                     // for pair, make_pair
#include <vector>                                      // for vector, swap
#include "clang/Tooling/Inclusions/StandardLibrary.h"  // for Header, Symbol
#include "iwyu_location_util.h"                        // for GetFilePath
#include "iwyu_path_util.h"                            // for ConvertToQuote...
#include "iwyu_port.h"                                 // for CHECK_, IWYU_A...
#include "iwyu_regex.h"                                // for RegexMatch
#include "iwyu_stl_util.h"                             // for FindInMap, Con...
#include "iwyu_string_util.h"                          // for string, Starts...
#include "iwyu_verrs.h"                                // for raw_ostream
#include "llvm/ADT/STLExtras.h"                        // for interleaveComma
#include "llvm/ADT/SmallString.h"                      // for SmallString
#include "llvm/ADT/SmallVector.h"                      // for SmallVector
#include "llvm/ADT/StringRef.h"                        // for StringRef
#include "llvm/ADT/Twine.h"                            // for Twine
#include "llvm/Support/Casting.h"                      // for dyn_cast
#include "llvm/Support/ErrorOr.h"                      // for ErrorOr
#include "llvm/Support/FileSystem.h"                   // for exists
#include "llvm/Support/Format.h"                       // for format, format...
#include "llvm/Support/MemoryBuffer.h"                 // for MemoryBuffer
#include "llvm/Support/SourceMgr.h"                    // for SourceMgr
#include "llvm/Support/YAMLParser.h"                   // for Stream, Node (...
---


(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_lexer_utils.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_lexer_utils.cc has correct #includes/fwd-decls)

# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_output.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_output.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_path_util.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_path_util.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_port.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_preprocessor.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.cc
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_location_util.cc:12:
In file included from /usr/lib/llvm-21/include/clang/AST/Decl.h:20:
In file included from /usr/lib/llvm-21/include/clang/AST/DeclBase.h:19:
In file included from /usr/lib/llvm-21/include/clang/AST/DeclarationName.h:16:
In file included from /usr/lib/llvm-21/include/clang/AST/Type.h:28:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_location_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_use_flags.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_location_util.cc has correct #includes/fwd-decls)

In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_output.cc:10:
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_output.h:25:
In file included from /usr/lib/llvm-21/include/clang/AST/Decl.h:20:
In file included from /usr/lib/llvm-21/include/clang/AST/DeclBase.h:19:
In file included from /usr/lib/llvm-21/include/clang/AST/DeclarationName.h:16:
In file included from /usr/lib/llvm-21/include/clang/AST/Type.h:28:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_output.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_use_flags.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_output.cc has correct #includes/fwd-decls)


(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_path_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_path_util.cc has correct #includes/fwd-decls)


(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.cc has correct #includes/fwd-decls)

# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_regex.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_regex.cc
# /home/runner/work/include-what-you-use/include-what-you-use/build/bin/include-what-you-use -Xiwyu --error -Xiwyu --check_also=*/iwyu_port.h -Xiwyu --check_also=*/iwyu_stl_util.h -Xiwyu --check_also=*/iwyu_string_util.h -Xiwyu --check_also=*/iwyu_use_flags.h -Xiwyu --check_also=*/iwyu_version.h -DIWYU_GIT_REV="8e9f30b" -DIWYU_RESOURCE_BINARY_PATH="/usr/lib/llvm-21/bin/clang-21" -DIWYU_RESOURCE_DIR="" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/usr/lib/llvm-21/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -std=c++17 -fno-exceptions -funwind-tables -o CMakeFiles/include-what-you-use.dir/iwyu_verrs.cc.o -c /home/runner/work/include-what-you-use/include-what-you-use/iwyu_verrs.cc
/home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.cc:380:49: warning: @headername directive missing a closing brace
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.cc:10:
In file included from /home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.h:73:
In file included from /usr/lib/llvm-21/include/clang/Lex/Preprocessor.h:21:
In file included from /usr/lib/llvm-21/include/clang/Basic/LangOptions.h:663:
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: warning: assigning value of preferred signed enum type 'FPEvalMethodKind' to unsigned bit-field 'FPEvalMethod'; negative enumerators of enum 'FPEvalMethodKind' will be converted to positive values [-Wpreferred-type-bitfield-enum-conversion]
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:661:10: note: expanded from macro 'ENUM_LANGOPT'
  661 |     Name = static_cast<unsigned>(Value);                                       \
      |          ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: consider making the bit-field type signed
  350 | BENIGN_ENUM_LANGOPT(FPEvalMethod, FPEvalMethodKind, 3, FEM_UnsetOnCommandLine, "FP type used for floating point arithmetic")
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:501:3: note: expanded from macro 'ENUM_LANGOPT'
  501 |   unsigned Name : Bits;
      |   ^~~~~~~~
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:350:1: note: preferred type for bit-field 'FPEvalMethodKind' specified here
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:67:6: note: expanded from macro 'BENIGN_ENUM_LANGOPT'
   67 |      COMPATIBLE_ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.def:62:6: note: expanded from macro 'COMPATIBLE_ENUM_LANGOPT'
   62 |      ENUM_LANGOPT(Name, Type, Bits, Default, Description)
      |      ^
/usr/lib/llvm-21/include/clang/Basic/LangOptions.h:500:3: note: expanded from macro 'ENUM_LANGOPT'
  500 |   LLVM_PREFERRED_TYPE(Type) \
      |   ^
/usr/lib/llvm-21/include/llvm/Support/Compiler.h:708:47: note: expanded from macro 'LLVM_PREFERRED_TYPE'
  708 | #define LLVM_PREFERRED_TYPE(T) __attribute__((preferred_type(T)))
      |                                               ^

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_use_flags.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.cc has correct #includes/fwd-decls)


(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_regex.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_regex.cc has correct #includes/fwd-decls)


(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_verrs.h has correct #includes/fwd-decls)

(/home/runner/work/include-what-you-use/include-what-you-use/iwyu_verrs.cc has correct #includes/fwd-decls)
fix_includes.py (exit: 0)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_use_flags.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_stl_util.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_string_util.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_ast_util.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_ast_util.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_cache.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_cache.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_driver.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_driver.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_getopt.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_getopt.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_globals.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_version.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_globals.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_lexer_utils.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_lexer_utils.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_location_util.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_location_util.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_output.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_output.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_path_util.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_path_util.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_port.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_preprocessor.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_regex.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_regex.cc: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_verrs.h: iwyu reports no contentful changes)
(skipping /home/runner/work/include-what-you-use/include-what-you-use/iwyu_verrs.cc: iwyu reports no contentful changes)
>>> Fixing #includes in '/home/runner/work/include-what-you-use/include-what-you-use/iwyu_include_picker.cc'
IWYU edited 1 files on your behalf.
diff --git a/iwyu_include_picker.cc b/iwyu_include_picker.cc
index a7faf4e..3a14472 100644
--- a/iwyu_include_picker.cc
+++ b/iwyu_include_picker.cc
@@ -9,6 +9,7 @@
 
 #include "iwyu_include_picker.h"
 
+#include <pstl/glue_algorithm_defs.h>
 #include <algorithm>                    // for find
 #include <cstddef>                      // for size_t
 // not hash_map: it's not as portable and needs hash<string>.

@kimgr
Copy link
Contributor

kimgr commented Apr 29, 2025

I'm personally not a fan of this, for small-minded reasons, because it creates another point that I need to remember to update around each release.

I feel like it's also creating some artificial constraints -- there's nothing that says IWYU at revision X cannot work with Clangs from a wide range of versions. It usually doesn't, but you can easily test by explicitly specifying which LLVM you want to test with, e.g.

for llvm_ver in 17 18 19 20 21 22
do
    mkdir iwyu-for-clang-$llvm_ver
    pushd iwyu-for-clang-$llvm_ver
    cmake -G Ninja -DCMAKE_PREFIX_PATH=/usr/lib/llvm-$llvm_ver ~/srcs/include-what-you-use
    ninja
    popd
done

I kind-of like that there's room for experiments there, but I see that it's a bit inconvenient that the default is always broken.

As I asked on the associated issue -- what do you hope to accomplish by not specifying the LLVM root as CMAKE_PREFIX_PATH? I wonder if there's a softer compromise that does the right thing most of the time...

@firewave
Copy link
Contributor Author

Sorry, if I did not address everything or was a bit rambly, but I am a bit absent-minded right now.

I'm personally not a fan of this, for small-minded reasons, because it creates another point that I need to remember to update around each release.

The specified version should also be the minimum required version. So if you specify 21, it should also allow 22. So you only need to bump it when you have an API breakage you cannot workaround. But ... IIRC the handling of the compatible version but be package-dependent. So that needs to be tested.

I feel like it's also creating some artificial constraints -- there's nothing that says IWYU at revision X cannot work with Clangs from a wide range of versions.

The current trunk only compiles with LLVM 21. This would also provide proper feedback to users which still try to use an older version.

I feel like it's also creating some artificial constraints -- there's nothing that says IWYU at revision X cannot work with Clangs from a wide range of versions

If you want to support that you would need to run that matrix in the CI to make sure that these are all working as expected. And do you really want to address issues with outdated LLVM versions? I think LLVM itself only supports two versions at most (it is documented in the terms of libc++).

@kimgr
Copy link
Contributor

kimgr commented Apr 29, 2025

I want to do as little as humanly possible, but I want to leave the code base open to experiments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants