[PATCH] D156363: [Driver] -###: exit with code 1 if hasErrorOccurred

Fangrui Song via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 26 13:34:07 PDT 2023


MaskRay created this revision.
MaskRay added reviewers: jansvoboda11, jhuber6, yaxunl.
Herald added subscribers: luke, yaneury, Chia-hungDuan, mattd, pmatos, asb, asavonic, abrachet, ormris, frasercrmck, wenlei, phosek, kerbowa, luismarques, apazos, sameer.abuasal, s.egerton, Jim, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, steven_wu, atanasyan, edward-jones, zzheng, jrtc27, niosHD, cryptoad, sabuasal, simoncook, johnrusso, rbar, fedor.sergeev, kbarton, hiraditya, sbc100, jvesely, nemanjai, dylanmckay, jyknight.
Herald added a reviewer: sscalpone.
Herald added a project: All.
MaskRay requested review of this revision.
Herald added subscribers: cfe-commits, wangpc, jplehr, sstefan1, aheejin.
Herald added a reviewer: jdoerfert.
Herald added a project: clang.

The exit code for -### is inconsistent. Unrecognized options lead to
exit code 1, as expected. However, most others errors (including invalid
option value) lead to exit code 0, differing from GCC and most utilities.

This is a longstanding quirk of -###, and we didn't fix it because many
driver tests need adjustment.

Change -### to be similar to -fdriver-only -v and exit with code 1.

This requires fixing many driver tests, but the end result gives us
stronger tests.

- Existing `RUN: %clang -### ...` tests usually don't use `CHECK-NOT: error:` or `--implicit-check-not=error:`. If a change introduces an error, such a change usually cannot be detected.
- Many folks contributing new tests don't know `-fdriver-only -v`. To test no driver error/warning for new tests, they can use the familiar `-### -Werror` instead of `-fdriver-only -v -Werror`.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D156363

Files:
  clang/lib/Driver/Driver.cpp
  clang/test/Driver/XRay/xray-instrument.c
  clang/test/Driver/aarch64-ite.c
  clang/test/Driver/aarch64-lrcpc3.c
  clang/test/Driver/aarch64-mcpu.c
  clang/test/Driver/aarch64-security-options.c
  clang/test/Driver/aarch64-sve-vector-bits.c
  clang/test/Driver/aarch64-target-as-march.s
  clang/test/Driver/aarch64-the.c
  clang/test/Driver/aix-err-options.c
  clang/test/Driver/aix-ld.c
  clang/test/Driver/aix-link-options-on-non-aix.c
  clang/test/Driver/aix-maix.c
  clang/test/Driver/aix-quadword-atomics-abi.c
  clang/test/Driver/amdgcn-gz-options.cl
  clang/test/Driver/amdgcn-toolchain-pic.cl
  clang/test/Driver/amdgpu-features.c
  clang/test/Driver/amdgpu-hip-system-arch.c
  clang/test/Driver/amdgpu-openmp-system-arch-fail.c
  clang/test/Driver/amdgpu-openmp-toolchain.c
  clang/test/Driver/amdgpu-toolchain-opencl.cl
  clang/test/Driver/amdgpu-toolchain.c
  clang/test/Driver/amdgpu-visibility.cl
  clang/test/Driver/apple-kext-mkernel.c
  clang/test/Driver/arclite-link-external-toolchain.c
  clang/test/Driver/arclite-link.c
  clang/test/Driver/arm-aarch64-bitfield-flags.c
  clang/test/Driver/arm-cmse-cve-2021-35465.c
  clang/test/Driver/arm-compiler-rt.c
  clang/test/Driver/arm-cortex-cpus-2.c
  clang/test/Driver/arm-ias-Wa.s
  clang/test/Driver/arm-implicit-it.s
  clang/test/Driver/arm-mfpu.c
  clang/test/Driver/arm-no-float-regs.c
  clang/test/Driver/arm-security-options.c
  clang/test/Driver/arm-target-as-mimplicit-it.s
  clang/test/Driver/arm-thread-pointer.c
  clang/test/Driver/avr-toolchain.c
  clang/test/Driver/cf-runtime-abi.c
  clang/test/Driver/cl-denorms-are-zero.cl
  clang/test/Driver/cl-eh.cpp
  clang/test/Driver/cl-inputs.c
  clang/test/Driver/cl-link.c
  clang/test/Driver/cl-options.c
  clang/test/Driver/cl-options.cu
  clang/test/Driver/cl-outputs.c
  clang/test/Driver/cl-pch.cpp
  clang/test/Driver/cl-zc.cpp
  clang/test/Driver/clang-translation.c
  clang/test/Driver/clang_f_opts.c
  clang/test/Driver/color-diagnostics.c
  clang/test/Driver/compiler-rt-unwind.c
  clang/test/Driver/compress-noias.c
  clang/test/Driver/compress.c
  clang/test/Driver/cuda-arch-translation.cu
  clang/test/Driver/cuda-bad-arch.cu
  clang/test/Driver/cuda-bindings.cu
  clang/test/Driver/cuda-constructor-alias.cu
  clang/test/Driver/cuda-cross-compiling.c
  clang/test/Driver/cuda-detect.cu
  clang/test/Driver/cuda-dwarf-2.cu
  clang/test/Driver/cuda-flush-denormals-to-zero.cu
  clang/test/Driver/cuda-march.cu
  clang/test/Driver/cuda-no-pgo-or-coverage.cu
  clang/test/Driver/cuda-no-sanitizers.cu
  clang/test/Driver/cuda-no-stack-protector.cu
  clang/test/Driver/cuda-not-found.cu
  clang/test/Driver/cuda-omp-unsupported-debug-options.cu
  clang/test/Driver/cuda-openmp-driver.cu
  clang/test/Driver/cuda-options.cu
  clang/test/Driver/cuda-output-asm.cu
  clang/test/Driver/cuda-phases.cu
  clang/test/Driver/cuda-version-check.cu
  clang/test/Driver/darwin-debug-prefix-map.c
  clang/test/Driver/darwin-debug-prefix-map.s
  clang/test/Driver/darwin-ld-platform-version-driverkit.c
  clang/test/Driver/darwin-ld.c
  clang/test/Driver/darwin-mac-catalyst-32bit-not-supported.c
  clang/test/Driver/darwin-maccatalyst.c
  clang/test/Driver/darwin-objc-runtime-maccatalyst.m
  clang/test/Driver/darwin-opt-record-ld.c
  clang/test/Driver/darwin-target-variant.c
  clang/test/Driver/darwin-version.c
  clang/test/Driver/debug-options-as.c
  clang/test/Driver/debug-options.c
  clang/test/Driver/debug-prefix-map.c
  clang/test/Driver/dwarf-target-version-clamp.cu
  clang/test/Driver/dxc_E.hlsl
  clang/test/Driver/dxc_Fo.hlsl
  clang/test/Driver/dxc_O.hlsl
  clang/test/Driver/dxc_fcgl.hlsl
  clang/test/Driver/embed-bitcode.c
  clang/test/Driver/endian.c
  clang/test/Driver/falign-loops.c
  clang/test/Driver/fast-math.c
  clang/test/Driver/fbasic-block-sections.c
  clang/test/Driver/fcs-profile-generate.c
  clang/test/Driver/fexcess-precision.c
  clang/test/Driver/flang/flang.f90
  clang/test/Driver/flang/flang_ucase.F90
  clang/test/Driver/fmemprof.cpp
  clang/test/Driver/fmessage-length.c
  clang/test/Driver/frame-pointer-elim.c
  clang/test/Driver/frame-pointer-elim.cl
  clang/test/Driver/fsanitize-address-destructor.c
  clang/test/Driver/fsanitize-coverage.c
  clang/test/Driver/fsanitize-ignorelist.c
  clang/test/Driver/fsanitize-metadata.c
  clang/test/Driver/fsanitize-use-after-return.c
  clang/test/Driver/fsanitize.c
  clang/test/Driver/fuchsia.c
  clang/test/Driver/fuchsia.cpp
  clang/test/Driver/function-alignment.c
  clang/test/Driver/fuse-ld.c
  clang/test/Driver/gcc-install-dir.cpp
  clang/test/Driver/gcc_forward.c
  clang/test/Driver/hexagon-hvx-ieee-fp.c
  clang/test/Driver/hexagon-hvx-qfloat.c
  clang/test/Driver/hexagon-hvx.c
  clang/test/Driver/hexagon-toolchain-elf.c
  clang/test/Driver/hip-autolink.hip
  clang/test/Driver/hip-binding.hip
  clang/test/Driver/hip-code-object-version.hip
  clang/test/Driver/hip-cuid-hash.hip
  clang/test/Driver/hip-cuid.hip
  clang/test/Driver/hip-default-gpu-arch.hip
  clang/test/Driver/hip-dependent-options.hip
  clang/test/Driver/hip-device-compile.hip
  clang/test/Driver/hip-device-libs.hip
  clang/test/Driver/hip-host-cpu-features.hip
  clang/test/Driver/hip-launch-api.hip
  clang/test/Driver/hip-link-bc-to-bc.hip
  clang/test/Driver/hip-link-bundle-archive.hip
  clang/test/Driver/hip-no-device-libs.hip
  clang/test/Driver/hip-options.hip
  clang/test/Driver/hip-output-file-name.hip
  clang/test/Driver/hip-printf.hip
  clang/test/Driver/hip-rdc-device-only.hip
  clang/test/Driver/hip-sanitize-options.hip
  clang/test/Driver/hip-save-temps.hip
  clang/test/Driver/hip-std.hip
  clang/test/Driver/hip-syntax-only.hip
  clang/test/Driver/hip-target-id.hip
  clang/test/Driver/hip-toolchain-dwarf.hip
  clang/test/Driver/hip-toolchain-features.hip
  clang/test/Driver/hip-toolchain-mllvm.hip
  clang/test/Driver/hip-toolchain-opt.hip
  clang/test/Driver/hipspv-pass-plugin.hip
  clang/test/Driver/ibm-profiling.c
  clang/test/Driver/invalid-offload-options.cpp
  clang/test/Driver/ld-path.c
  clang/test/Driver/linux-ld.c
  clang/test/Driver/loongarch-mfpu-error.c
  clang/test/Driver/lto.cu
  clang/test/Driver/macho-embedded.c
  clang/test/Driver/masm.c
  clang/test/Driver/masm.s
  clang/test/Driver/mbackchain.c
  clang/test/Driver/mbig-obj.c
  clang/test/Driver/mcount.c
  clang/test/Driver/mdefault-visibility-export-mapping.c
  clang/test/Driver/mdouble.c
  clang/test/Driver/memtag-ld.c
  clang/test/Driver/mfentry.c
  clang/test/Driver/miamcu-opt.c
  clang/test/Driver/miamcu-opt.cpp
  clang/test/Driver/mingw-cfguard.c
  clang/test/Driver/mips-indirect-branch.c
  clang/test/Driver/mlong-double-128.c
  clang/test/Driver/mlong-double-64.c
  clang/test/Driver/module-output.cppm
  clang/test/Driver/modules.m
  clang/test/Driver/mprefer-vector-width.c
  clang/test/Driver/mrecip.c
  clang/test/Driver/msp430-hwmult.c
  clang/test/Driver/msp430-mmcu.c
  clang/test/Driver/munaligned-access-unused.c
  clang/test/Driver/myriad-toolchain.c
  clang/test/Driver/native-llvm.c
  clang/test/Driver/no-integrated-as-win.c
  clang/test/Driver/no-integrated-as.c
  clang/test/Driver/nvptx-cuda-system-arch.c
  clang/test/Driver/objc-weak.m
  clang/test/Driver/offloading-interoperability.c
  clang/test/Driver/ohos.c
  clang/test/Driver/ohos.cpp
  clang/test/Driver/opencl.cl
  clang/test/Driver/openmp-offload-gpu.c
  clang/test/Driver/openmp-offload-infer.c
  clang/test/Driver/openmp-offload-jit.c
  clang/test/Driver/openmp-offload.c
  clang/test/Driver/openmp-system-arch.c
  clang/test/Driver/opt-record.c
  clang/test/Driver/p.c
  clang/test/Driver/pic.c
  clang/test/Driver/ppc-cpus.c
  clang/test/Driver/ppc-features.cpp
  clang/test/Driver/ppc-roptr.c
  clang/test/Driver/preserve-uselistorder.c
  clang/test/Driver/ps4-pic.c
  clang/test/Driver/ps4-ps5-linker-non-win.c
  clang/test/Driver/ps4ps5base.c
  clang/test/Driver/ps5-pic.c
  clang/test/Driver/response-file-errs.c
  clang/test/Driver/riscv-abi.c
  clang/test/Driver/riscv-arch.c
  clang/test/Driver/riscv-cpus.c
  clang/test/Driver/riscv-rvv-vector-bits.c
  clang/test/Driver/rocm-detect.cl
  clang/test/Driver/rocm-detect.hip
  clang/test/Driver/rocm-not-found.cl
  clang/test/Driver/ropi-rwpi.c
  clang/test/Driver/rtti-options.cpp
  clang/test/Driver/sanitizer-ld.c
  clang/test/Driver/save-stats.c
  clang/test/Driver/sls-hardening-options.c
  clang/test/Driver/sparc-float.c
  clang/test/Driver/sparc-march.c
  clang/test/Driver/split-debug.c
  clang/test/Driver/split-lto-unit.c
  clang/test/Driver/stack-protector-guard.c
  clang/test/Driver/symbol-partition.c
  clang/test/Driver/systemz-float-01.c
  clang/test/Driver/thread-model.c
  clang/test/Driver/unknown-arg.c
  clang/test/Driver/virtual-function-elimination.cpp
  clang/test/Driver/wasm-toolchain.c
  clang/test/Driver/whole-program-vtables.c
  clang/test/Driver/windows-cross.c
  clang/test/Driver/windows-macho.c
  clang/test/Driver/windows-pic.cpp
  clang/test/Driver/windows-thumbv7em.cpp
  clang/test/Driver/working-directory.c
  clang/test/Driver/x86-mabi.c
  clang/test/Driver/x86-malign-branch.c
  clang/test/Driver/x86-target-features.c
  clang/test/Driver/xcoff-build-id.c
  clang/test/OpenMP/linking.c
  clang/test/Preprocessor/aarch64-target-features.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156363.544494.patch
Type: text/x-patch
Size: 465085 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230726/beae5ab1/attachment-0001.bin>


More information about the cfe-commits mailing list