[PATCH] D112767: [clang][driver] Fix multiarch output name with -Wl arg
This revision was automatically updated to reflect the committed changes. Closed by commit rGbd8a9507ef8c: [clang][driver] Fix multiarch output name with -Wl arg (authored by keith). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112767/new/ https://reviews.llvm.org/D112767 Files: clang/lib/Driver/Driver.cpp clang/test/Driver/darwin-dsymutil.c Index: clang/test/Driver/darwin-dsymutil.c === --- clang/test/Driver/darwin-dsymutil.c +++ clang/test/Driver/darwin-dsymutil.c @@ -51,6 +51,14 @@ // CHECK-MULTIARCH-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" +// +// RUN: %clang -target x86_64-apple-darwin10 \ +// RUN: -Wl,-foo -arch x86_64 -arch arm64 -ccc-print-bindings %s 2> %t +// RUN: FileCheck --check-prefix=CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG < %t %s +// +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "x86_64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" // Check that we only use dsymutil when needed. // Index: clang/lib/Driver/Driver.cpp === --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4697,8 +4697,14 @@ CachedResults, A->getOffloadingDeviceKind())); } - // Always use the first input as the base input. + // Always use the first file input as the base input. const char *BaseInput = InputInfos[0].getBaseInput(); + for (auto : InputInfos) { +if (Info.isFilename()) { + BaseInput = Info.getBaseInput(); + break; +} + } // ... except dsymutil actions, which use their actual input as the base // input. Index: clang/test/Driver/darwin-dsymutil.c === --- clang/test/Driver/darwin-dsymutil.c +++ clang/test/Driver/darwin-dsymutil.c @@ -51,6 +51,14 @@ // CHECK-MULTIARCH-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" +// +// RUN: %clang -target x86_64-apple-darwin10 \ +// RUN: -Wl,-foo -arch x86_64 -arch arm64 -ccc-print-bindings %s 2> %t +// RUN: FileCheck --check-prefix=CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG < %t %s +// +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "x86_64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" // Check that we only use dsymutil when needed. // Index: clang/lib/Driver/Driver.cpp === --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4697,8 +4697,14 @@ CachedResults, A->getOffloadingDeviceKind())); } - // Always use the first input as the base input. + // Always use the first file input as the base input. const char *BaseInput = InputInfos[0].getBaseInput(); + for (auto : InputInfos) { +if (Info.isFilename()) { + BaseInput = Info.getBaseInput(); + break; +} + } // ... except dsymutil actions, which use their actual input as the base // input. ___ cfe-commits mailing list
[PATCH] D112767: [clang][driver] Fix multiarch output name with -Wl arg
JDevlieghere accepted this revision. JDevlieghere added a comment. This revision is now accepted and ready to land. LGTM Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112767/new/ https://reviews.llvm.org/D112767 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D112767: [clang][driver] Fix multiarch output name with -Wl arg
keith updated this revision to Diff 383213. keith marked an inline comment as done. keith added a comment. Update comment Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112767/new/ https://reviews.llvm.org/D112767 Files: clang/lib/Driver/Driver.cpp clang/test/Driver/darwin-dsymutil.c Index: clang/test/Driver/darwin-dsymutil.c === --- clang/test/Driver/darwin-dsymutil.c +++ clang/test/Driver/darwin-dsymutil.c @@ -51,6 +51,14 @@ // CHECK-MULTIARCH-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" +// +// RUN: %clang -target x86_64-apple-darwin10 \ +// RUN: -Wl,-foo -arch x86_64 -arch arm64 -ccc-print-bindings %s 2> %t +// RUN: FileCheck --check-prefix=CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG < %t %s +// +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "x86_64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" // Check that we only use dsymutil when needed. // Index: clang/lib/Driver/Driver.cpp === --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4694,8 +4694,14 @@ CachedResults, A->getOffloadingDeviceKind())); } - // Always use the first input as the base input. + // Always use the first file input as the base input. const char *BaseInput = InputInfos[0].getBaseInput(); + for (auto : InputInfos) { +if (Info.isFilename()) { + BaseInput = Info.getBaseInput(); + break; +} + } // ... except dsymutil actions, which use their actual input as the base // input. Index: clang/test/Driver/darwin-dsymutil.c === --- clang/test/Driver/darwin-dsymutil.c +++ clang/test/Driver/darwin-dsymutil.c @@ -51,6 +51,14 @@ // CHECK-MULTIARCH-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" +// +// RUN: %clang -target x86_64-apple-darwin10 \ +// RUN: -Wl,-foo -arch x86_64 -arch arm64 -ccc-print-bindings %s 2> %t +// RUN: FileCheck --check-prefix=CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG < %t %s +// +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "x86_64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" // Check that we only use dsymutil when needed. // Index: clang/lib/Driver/Driver.cpp === --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4694,8 +4694,14 @@ CachedResults, A->getOffloadingDeviceKind())); } - // Always use the first input as the base input. + // Always use the first file input as the base input. const char *BaseInput = InputInfos[0].getBaseInput(); + for (auto : InputInfos) { +if (Info.isFilename()) { + BaseInput = Info.getBaseInput(); + break; +} + } // ... except dsymutil actions, which use their actual input as the base // input. ___ cfe-commits mailing list cfe-commits@lists.llvm.org
[PATCH] D112767: [clang][driver] Fix multiarch output name with -Wl arg
kastiglione added inline comments. Comment at: clang/lib/Driver/Driver.cpp:4697 // Always use the first input as the base input. const char *BaseInput = InputInfos[0].getBaseInput(); maybe adjust this comment to emphasize first _file_ input Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112767/new/ https://reviews.llvm.org/D112767 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D112767: [clang][driver] Fix multiarch output name with -Wl arg
keith created this revision. keith added reviewers: ddunbar, JDevlieghere. keith requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Previously if you passed a `-Wl,-foo` _before_ the source filename, the first `InputInfos`, which is used for the base input name would be an `InputArg` kind, which would never have a base input name. Now we use that by default, but pick the first `InputInfo` that is of kind `Filename` to get the name from if there is one. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D112767 Files: clang/lib/Driver/Driver.cpp clang/test/Driver/darwin-dsymutil.c Index: clang/test/Driver/darwin-dsymutil.c === --- clang/test/Driver/darwin-dsymutil.c +++ clang/test/Driver/darwin-dsymutil.c @@ -51,6 +51,14 @@ // CHECK-MULTIARCH-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" +// +// RUN: %clang -target x86_64-apple-darwin10 \ +// RUN: -Wl,-foo -arch x86_64 -arch arm64 -ccc-print-bindings %s 2> %t +// RUN: FileCheck --check-prefix=CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG < %t %s +// +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "x86_64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" // Check that we only use dsymutil when needed. // Index: clang/lib/Driver/Driver.cpp === --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4696,6 +4696,12 @@ // Always use the first input as the base input. const char *BaseInput = InputInfos[0].getBaseInput(); + for (auto : InputInfos) { +if (Info.isFilename()) { + BaseInput = Info.getBaseInput(); + break; +} + } // ... except dsymutil actions, which use their actual input as the base // input. Index: clang/test/Driver/darwin-dsymutil.c === --- clang/test/Driver/darwin-dsymutil.c +++ clang/test/Driver/darwin-dsymutil.c @@ -51,6 +51,14 @@ // CHECK-MULTIARCH-OUTPUT-NAME: "x86_64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Linker", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" // CHECK-MULTIARCH-OUTPUT-NAME: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" +// +// RUN: %clang -target x86_64-apple-darwin10 \ +// RUN: -Wl,-foo -arch x86_64 -arch arm64 -ccc-print-bindings %s 2> %t +// RUN: FileCheck --check-prefix=CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG < %t %s +// +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "x86_64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Linker", inputs: [(input arg), "{{.*}}{{/|\\}}darwin-dsymutil-arm64.o"], output: "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out" +// CHECK-MULTIARCH-OUTPUT-NAME-WITH-ARG: "arm64-apple-darwin10" - "darwin::Lipo", inputs: ["{{.*}}{{/|\\}}darwin-dsymutil-x86_64.out", "{{.*}}{{/|\\}}darwin-dsymutil-arm64.out"], output: "a.out" // Check that we only use dsymutil when needed. // Index: clang/lib/Driver/Driver.cpp === --- clang/lib/Driver/Driver.cpp +++ clang/lib/Driver/Driver.cpp @@ -4696,6 +4696,12 @@ // Always use the first input as the base input. const char *BaseInput = InputInfos[0].getBaseInput(); + for (auto : InputInfos) { +if (Info.isFilename()) { + BaseInput = Info.getBaseInput(); + break; +} + } // ... except dsymutil actions, which use their actual input as the base // input. ___