[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
This revision was automatically updated to reflect the committed changes. Closed by commit rL310614: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options (authored by atanasyan). Changed prior to commit: https://reviews.llvm.org/D36551?vs=110562&id=110586#toc Repository: rL LLVM https://reviews.llvm.org/D36551 Files: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp cfe/trunk/test/Driver/mips-features.c cfe/trunk/test/Driver/mips-longcalls-warning.c Index: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td === --- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td +++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td @@ -292,6 +292,10 @@ "ignoring '-mgpopt' option as it cannot be used with %select{|the implicit" " usage of }0-mabicalls">, InGroup; +def warn_drv_unsupported_longcalls : Warning< + "ignoring '-mlong-calls' option as it is not currently supported with " + "%select{|the implicit usage of }0-mabicalls">, + InGroup; def warn_drv_unsupported_abicalls : Warning< "ignoring '-mabicalls' option as it cannot be used with " "non position-independent code and the N64 ABI">, Index: cfe/trunk/test/Driver/mips-features.c === --- cfe/trunk/test/Driver/mips-features.c +++ cfe/trunk/test/Driver/mips-features.c @@ -336,12 +336,16 @@ // CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx" // -mlong-call -// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \ +// RUN: %clang -target mips-img-linux-gnu -### -c %s \ +// RUN:-mno-abicalls -mlong-calls 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-ON %s -// RUN: %clang -target mips-img-linux-gnu -### -c %s -mno-long-calls 2>&1 \ +// RUN: %clang -target mips-img-linux-gnu -### -c %s \ +// RUN:-mno-abicalls -mno-long-calls 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-OFF %s // RUN: %clang -target mips-img-linux-gnu -### -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s +// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \ +// RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s // LONG-CALLS-ON: "-target-feature" "+long-calls" // LONG-CALLS-OFF: "-target-feature" "-long-calls" // LONG-CALLS-DEF-NOT: "long-calls" Index: cfe/trunk/test/Driver/mips-longcalls-warning.c === --- cfe/trunk/test/Driver/mips-longcalls-warning.c +++ cfe/trunk/test/Driver/mips-longcalls-warning.c @@ -0,0 +1,6 @@ +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s +// IMPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with the implicit usage of -mabicalls + +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls -mabicalls %s 2>&1 | FileCheck -check-prefix=EXPLICIT %s +// EXPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with -mabicalls Index: cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp === --- cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp +++ cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp @@ -245,6 +245,16 @@ else Features.push_back("-noabicalls"); + if (Arg *A = Args.getLastArg(options::OPT_mlong_calls, + options::OPT_mno_long_calls)) { +if (A->getOption().matches(options::OPT_mno_long_calls)) + Features.push_back("-long-calls"); +else if (!UseAbiCalls) + Features.push_back("+long-calls"); +else + D.Diag(diag::warn_drv_unsupported_longcalls) << (ABICallsArg ? 0 : 1); + } + mips::FloatABI FloatABI = mips::getMipsFloatABI(D, Args); if (FloatABI == mips::FloatABI::Soft) { // FIXME: Note, this is a hack. We need to pass the selected float @@ -309,8 +319,6 @@ AddTargetFeature(Args, Features, options::OPT_mno_odd_spreg, options::OPT_modd_spreg, "nooddspreg"); - AddTargetFeature(Args, Features, options::OPT_mlong_calls, - options::OPT_mno_long_calls, "long-calls"); AddTargetFeature(Args, Features, options::OPT_mmt, options::OPT_mno_mt, "mt"); } Index: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td === --- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td +++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td @@ -292,6 +292,10 @@ "ignoring '-mgpopt' option as it cannot be used with %select{|the implicit" " usage of }0-mabicalls">, InGroup; +def warn_drv_unsupported_longcalls : Warning< + "ignoring '-mlong-calls' option as it is not currently supported with " + "%select{|the implicit usage of }0-mabicalls">, + InGroup; def warn_drv_unsupported_abicalls
[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
atanasyan added inline comments. Comment at: test/Driver/mips-longcalls-warning.c:1 +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s sdardis wrote: > atanasyan wrote: > > sdardis wrote: > > > Can you put this in test/Driver/mips-abicalls-warning.c from the other > > > patch? I'd prefer to keep all the abicalls warnings together rather than > > > separate tests based on the feature the conflict with. > > > Can you put this in test/Driver/mips-abicalls-warning.c from the other > > > patch? > > > > I can, but in that case it's probably better to join both patches because > > that patch loses its test. > > > You can do it as an NFC change afterward both commits in that case. OK. Thanks for review. Repository: rL LLVM https://reviews.llvm.org/D36551 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
sdardis accepted this revision. sdardis added a comment. This revision is now accepted and ready to land. LGTM. Comment at: test/Driver/mips-longcalls-warning.c:1 +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s atanasyan wrote: > sdardis wrote: > > Can you put this in test/Driver/mips-abicalls-warning.c from the other > > patch? I'd prefer to keep all the abicalls warnings together rather than > > separate tests based on the feature the conflict with. > > Can you put this in test/Driver/mips-abicalls-warning.c from the other > > patch? > > I can, but in that case it's probably better to join both patches because > that patch loses its test. > You can do it as an NFC change afterward both commits in that case. Repository: rL LLVM https://reviews.llvm.org/D36551 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
atanasyan added inline comments. Comment at: test/Driver/mips-longcalls-warning.c:1 +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s sdardis wrote: > Can you put this in test/Driver/mips-abicalls-warning.c from the other patch? > I'd prefer to keep all the abicalls warnings together rather than separate > tests based on the feature the conflict with. > Can you put this in test/Driver/mips-abicalls-warning.c from the other patch? I can, but in that case it's probably better to join both patches because that patch loses its test. Repository: rL LLVM https://reviews.llvm.org/D36551 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
sdardis added inline comments. Comment at: test/Driver/mips-longcalls-warning.c:1 +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s Can you put this in test/Driver/mips-abicalls-warning.c from the other patch? I'd prefer to keep all the abicalls warnings together rather than separate tests based on the feature the conflict with. Repository: rL LLVM https://reviews.llvm.org/D36551 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
atanasyan updated this revision to Diff 110562. atanasyan added a comment. - Addressed review comments. Repository: rL LLVM https://reviews.llvm.org/D36551 Files: include/clang/Basic/DiagnosticDriverKinds.td lib/Driver/ToolChains/Arch/Mips.cpp test/Driver/mips-features.c test/Driver/mips-longcalls-warning.c Index: test/Driver/mips-longcalls-warning.c === --- /dev/null +++ test/Driver/mips-longcalls-warning.c @@ -0,0 +1,6 @@ +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s +// IMPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with the implicit usage of -mabicalls + +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls -mabicalls %s 2>&1 | FileCheck -check-prefix=EXPLICIT %s +// EXPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with -mabicalls Index: test/Driver/mips-features.c === --- test/Driver/mips-features.c +++ test/Driver/mips-features.c @@ -336,12 +336,16 @@ // CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx" // -mlong-call -// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \ +// RUN: %clang -target mips-img-linux-gnu -### -c %s \ +// RUN:-mno-abicalls -mlong-calls 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-ON %s -// RUN: %clang -target mips-img-linux-gnu -### -c %s -mno-long-calls 2>&1 \ +// RUN: %clang -target mips-img-linux-gnu -### -c %s \ +// RUN:-mno-abicalls -mno-long-calls 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-OFF %s // RUN: %clang -target mips-img-linux-gnu -### -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s +// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \ +// RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s // LONG-CALLS-ON: "-target-feature" "+long-calls" // LONG-CALLS-OFF: "-target-feature" "-long-calls" // LONG-CALLS-DEF-NOT: "long-calls" Index: lib/Driver/ToolChains/Arch/Mips.cpp === --- lib/Driver/ToolChains/Arch/Mips.cpp +++ lib/Driver/ToolChains/Arch/Mips.cpp @@ -245,6 +245,16 @@ else Features.push_back("-noabicalls"); + if (Arg *A = Args.getLastArg(options::OPT_mlong_calls, + options::OPT_mno_long_calls)) { +if (A->getOption().matches(options::OPT_mno_long_calls)) + Features.push_back("-long-calls"); +else if (!UseAbiCalls) + Features.push_back("+long-calls"); +else + D.Diag(diag::warn_drv_unsupported_longcalls) << (ABICallsArg ? 0 : 1); + } + mips::FloatABI FloatABI = mips::getMipsFloatABI(D, Args); if (FloatABI == mips::FloatABI::Soft) { // FIXME: Note, this is a hack. We need to pass the selected float @@ -309,8 +319,6 @@ AddTargetFeature(Args, Features, options::OPT_mno_odd_spreg, options::OPT_modd_spreg, "nooddspreg"); - AddTargetFeature(Args, Features, options::OPT_mlong_calls, - options::OPT_mno_long_calls, "long-calls"); AddTargetFeature(Args, Features, options::OPT_mmt, options::OPT_mno_mt, "mt"); } Index: include/clang/Basic/DiagnosticDriverKinds.td === --- include/clang/Basic/DiagnosticDriverKinds.td +++ include/clang/Basic/DiagnosticDriverKinds.td @@ -292,6 +292,10 @@ "ignoring '-mgpopt' option as it cannot be used with %select{|the implicit" " usage of }0-mabicalls">, InGroup; +def warn_drv_unsupported_longcalls : Warning< + "ignoring '-mlong-calls' option as it is not currently supported with " + "%select{|the implicit usage of }0-mabicalls">, + InGroup; def warn_drv_unsupported_abicalls : Warning< "ignoring '-mabicalls' option as it cannot be used with " "non position-independent code and the N64 ABI">, Index: test/Driver/mips-longcalls-warning.c === --- /dev/null +++ test/Driver/mips-longcalls-warning.c @@ -0,0 +1,6 @@ +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s +// IMPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with the implicit usage of -mabicalls + +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls -mabicalls %s 2>&1 | FileCheck -check-prefix=EXPLICIT %s +// EXPLICIT: warning: ignoring '-mlong-calls' option as it is not currently supported with -mabicalls Index: test/Driver/mips-features.c === --- test/Driver/mips-features.c +++ test/Driver/mips-features.c @@ -336,12 +336,16 @@ // CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx" // -mlong-call -// RUN: %clang -target mips-img-linux-gn
[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
sdardis added inline comments. Comment at: include/clang/Basic/DiagnosticDriverKinds.td:296-297 +def warn_drv_unsupported_longcalls : Warning< + "ignoring '-mlong-calls' option as it cannot be used with " + "%select{|the implicit usage of }0-mabicalls">, + InGroup; "as it is not currently supported with " I think is better, as we currently don't support mixing the options but could do in the future. Repository: rL LLVM https://reviews.llvm.org/D36551 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D36551: [mips] Show warning in case of mixing -mlong-calls and -mabicalls options
atanasyan created this revision. atanasyan added a project: clang. Herald added a subscriber: arichardson. While we do not support `-mshared / -mno-shared` properly, show warning and ignore `-mlong-calls` option in case of implicitly or explicitly provided `-mabicalls` option. The patch depends on https://reviews.llvm.org/D36550. Repository: rL LLVM https://reviews.llvm.org/D36551 Files: include/clang/Basic/DiagnosticDriverKinds.td lib/Driver/ToolChains/Arch/Mips.cpp test/Driver/mips-features.c test/Driver/mips-longcalls-warning.c Index: test/Driver/mips-longcalls-warning.c === --- /dev/null +++ test/Driver/mips-longcalls-warning.c @@ -0,0 +1,6 @@ +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s +// IMPLICIT: warning: ignoring '-mlong-calls' option as it cannot be used with the implicit usage of -mabicalls + +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls -mabicalls %s 2>&1 | FileCheck -check-prefix=EXPLICIT %s +// EXPLICIT: warning: ignoring '-mlong-calls' option as it cannot be used with -mabicalls Index: test/Driver/mips-features.c === --- test/Driver/mips-features.c +++ test/Driver/mips-features.c @@ -336,12 +336,16 @@ // CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx" // -mlong-call -// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \ +// RUN: %clang -target mips-img-linux-gnu -### -c %s \ +// RUN:-mno-abicalls -mlong-calls 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-ON %s -// RUN: %clang -target mips-img-linux-gnu -### -c %s -mno-long-calls 2>&1 \ +// RUN: %clang -target mips-img-linux-gnu -### -c %s \ +// RUN:-mno-abicalls -mno-long-calls 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-OFF %s // RUN: %clang -target mips-img-linux-gnu -### -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s +// RUN: %clang -target mips-img-linux-gnu -### -c %s -mlong-calls 2>&1 \ +// RUN: | FileCheck --check-prefix=LONG-CALLS-DEF %s // LONG-CALLS-ON: "-target-feature" "+long-calls" // LONG-CALLS-OFF: "-target-feature" "-long-calls" // LONG-CALLS-DEF-NOT: "long-calls" Index: lib/Driver/ToolChains/Arch/Mips.cpp === --- lib/Driver/ToolChains/Arch/Mips.cpp +++ lib/Driver/ToolChains/Arch/Mips.cpp @@ -252,6 +252,16 @@ else Features.push_back("-noabicalls"); + if (Arg *A = Args.getLastArg(options::OPT_mlong_calls, + options::OPT_mno_long_calls)) { +if (A->getOption().matches(options::OPT_mno_long_calls)) + Features.push_back("-long-calls"); +else if (NeedNoAbiCalls) + Features.push_back("+long-calls"); +else + D.Diag(diag::warn_drv_unsupported_longcalls) << (ABICallsArg ? 0 : 1); + } + mips::FloatABI FloatABI = mips::getMipsFloatABI(D, Args); if (FloatABI == mips::FloatABI::Soft) { // FIXME: Note, this is a hack. We need to pass the selected float @@ -316,8 +326,6 @@ AddTargetFeature(Args, Features, options::OPT_mno_odd_spreg, options::OPT_modd_spreg, "nooddspreg"); - AddTargetFeature(Args, Features, options::OPT_mlong_calls, - options::OPT_mno_long_calls, "long-calls"); AddTargetFeature(Args, Features, options::OPT_mmt, options::OPT_mno_mt, "mt"); } Index: include/clang/Basic/DiagnosticDriverKinds.td === --- include/clang/Basic/DiagnosticDriverKinds.td +++ include/clang/Basic/DiagnosticDriverKinds.td @@ -292,6 +292,10 @@ "ignoring '-mgpopt' option as it cannot be used with %select{|the implicit" " usage of }0-mabicalls">, InGroup; +def warn_drv_unsupported_longcalls : Warning< + "ignoring '-mlong-calls' option as it cannot be used with " + "%select{|the implicit usage of }0-mabicalls">, + InGroup; def warn_drv_unsupported_abicalls : Warning< "ignoring '-mabicalls' option as it cannot be used with " "non position-independent code and N64 ABI">, Index: test/Driver/mips-longcalls-warning.c === --- /dev/null +++ test/Driver/mips-longcalls-warning.c @@ -0,0 +1,6 @@ +// REQUIRES: mips-registered-target +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls %s 2>&1 | FileCheck -check-prefix=IMPLICIT %s +// IMPLICIT: warning: ignoring '-mlong-calls' option as it cannot be used with the implicit usage of -mabicalls + +// RUN: %clang -### -c -target mips-mti-elf -mlong-calls -mabicalls %s 2>&1 | FileCheck -check-prefix=EXPLICIT %s +// EXPLICIT: warning: ignoring '-mlong-calls' option as it cannot be used with -mabicalls Index: test/Driver/mips-features.c === --- test/Driver/mips-features.c ++