This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG9272aa9d08cb: [Driver] Do not generate error about unsupported target specific options when… (authored by mgabka). Herald added a project: clang. Herald added a subscriber: cfe-commits.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D159361/new/ https://reviews.llvm.org/D159361 Files: clang/lib/Driver/Driver.cpp clang/test/Driver/no-action.c Index: clang/test/Driver/no-action.c =================================================================== --- /dev/null +++ clang/test/Driver/no-action.c @@ -0,0 +1,10 @@ +// RUN: %clang --target=aarch64-none-gnu --verbose -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING +// RUN: %clang --target=aarch64-none-gnu -### -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING + +// RUN: %clang --target=x86_64-unknown-linux-gnu --verbose -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING +// RUN: %clang --target=x86_64-unknown-linux-gnu -### -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING + +/// In situation when there is no compilation/linking clang should not emit error +/// about target specific options, but just warn that are not used. +WARNING: warning: argument unused during compilation +WARNING: warning: argument unused during compilation Index: clang/lib/Driver/Driver.cpp =================================================================== --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4953,7 +4953,12 @@ // already been warned about. if (!IsCLMode() || !A->getOption().matches(options::OPT_UNKNOWN)) { if (A->getOption().hasFlag(options::TargetSpecific) && - !A->isIgnoredTargetSpecific() && !HasAssembleJob) { + !A->isIgnoredTargetSpecific() && !HasAssembleJob && + // When for example -### or -v is used + // without a file, target specific options are not + // consumed/validated. + // Instead emitting an error emit a warning instead. + !C.getActions().empty()) { Diag(diag::err_drv_unsupported_opt_for_target) << A->getSpelling() << getTargetTriple(); } else {
Index: clang/test/Driver/no-action.c =================================================================== --- /dev/null +++ clang/test/Driver/no-action.c @@ -0,0 +1,10 @@ +// RUN: %clang --target=aarch64-none-gnu --verbose -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING +// RUN: %clang --target=aarch64-none-gnu -### -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING + +// RUN: %clang --target=x86_64-unknown-linux-gnu --verbose -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING +// RUN: %clang --target=x86_64-unknown-linux-gnu -### -mcpu= -march= 2>&1 | FileCheck %s --check-prefix=WARNING + +/// In situation when there is no compilation/linking clang should not emit error +/// about target specific options, but just warn that are not used. +WARNING: warning: argument unused during compilation +WARNING: warning: argument unused during compilation Index: clang/lib/Driver/Driver.cpp =================================================================== --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4953,7 +4953,12 @@ // already been warned about. if (!IsCLMode() || !A->getOption().matches(options::OPT_UNKNOWN)) { if (A->getOption().hasFlag(options::TargetSpecific) && - !A->isIgnoredTargetSpecific() && !HasAssembleJob) { + !A->isIgnoredTargetSpecific() && !HasAssembleJob && + // When for example -### or -v is used + // without a file, target specific options are not + // consumed/validated. + // Instead emitting an error emit a warning instead. + !C.getActions().empty()) { Diag(diag::err_drv_unsupported_opt_for_target) << A->getSpelling() << getTargetTriple(); } else {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits