From c094131557762e916d8e3d66f3982edb6c4ae0a4 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Mon, 26 Sep 2016 04:48:22 +0000 Subject: [PATCH] Driver: avoid failing in the backend Avoid failing in the backend when the rewrite map does not exist. Rather check that the map exists in the frontend before handing it off to the backend. Add the missing rewrite maps that the tests were referencing. llvm-svn: 282379 --- clang/lib/Driver/Tools.cpp | 11 ++++++++--- clang/test/Driver/Inputs/rewrite-1.map | 0 clang/test/Driver/Inputs/rewrite-2.map | 0 clang/test/Driver/Inputs/rewrite.map | 0 clang/test/Driver/rewrite-map-files.c | 2 ++ 5 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 clang/test/Driver/Inputs/rewrite-1.map create mode 100644 clang/test/Driver/Inputs/rewrite-2.map create mode 100644 clang/test/Driver/Inputs/rewrite.map create mode 100644 clang/test/Driver/rewrite-map-files.c diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 7d1e0d0..dcdc92a 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -4213,9 +4213,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.hasArg(options::OPT_frewrite_map_file_EQ)) { for (const Arg *A : Args.filtered(options::OPT_frewrite_map_file, options::OPT_frewrite_map_file_EQ)) { - CmdArgs.push_back("-frewrite-map-file"); - CmdArgs.push_back(A->getValue()); - A->claim(); + StringRef Map = A->getValue(); + if (!llvm::sys::fs::exists(Map)) { + D.Diag(diag::err_drv_no_such_file) << Map; + } else { + CmdArgs.push_back("-frewrite-map-file"); + CmdArgs.push_back(A->getValue()); + A->claim(); + } } } diff --git a/clang/test/Driver/Inputs/rewrite-1.map b/clang/test/Driver/Inputs/rewrite-1.map new file mode 100644 index 0000000..e69de29 diff --git a/clang/test/Driver/Inputs/rewrite-2.map b/clang/test/Driver/Inputs/rewrite-2.map new file mode 100644 index 0000000..e69de29 diff --git a/clang/test/Driver/Inputs/rewrite.map b/clang/test/Driver/Inputs/rewrite.map new file mode 100644 index 0000000..e69de29 diff --git a/clang/test/Driver/rewrite-map-files.c b/clang/test/Driver/rewrite-map-files.c new file mode 100644 index 0000000..fe04fba --- /dev/null +++ b/clang/test/Driver/rewrite-map-files.c @@ -0,0 +1,2 @@ +// RUN: %clang -### -frewrite-map-file %t.map -c %s -o /dev/null 2>&1 | FileCheck %s +// CHECK: error: no such file or directory: -- 2.7.4