From 51be73daa9df0b9eab157318a9274ebe3e46c627 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Mon, 18 Mar 2013 19:41:18 +0000 Subject: [PATCH] Objective-C modern translator. Don't put line info into the pre-preprocessed file to be passed to modern translator when compiling in no debug mode. // rdar://13138170 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177311 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 6 +++++- test/Rewriter/rewrite-line-directive.m | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test/Rewriter/rewrite-line-directive.m diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 97aa3155b9..4db492a13a 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1777,8 +1777,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, } else if (isa(JA)) { if (Output.getType() == types::TY_Dependencies) CmdArgs.push_back("-Eonly"); - else + else { CmdArgs.push_back("-E"); + if (Args.hasArg(options::OPT_rewrite_objc) && + !Args.hasArg(options::OPT_g_Group)) + CmdArgs.push_back("-P"); + } } else if (isa(JA)) { CmdArgs.push_back("-emit-obj"); diff --git a/test/Rewriter/rewrite-line-directive.m b/test/Rewriter/rewrite-line-directive.m new file mode 100644 index 0000000000..5c4e9574c1 --- /dev/null +++ b/test/Rewriter/rewrite-line-directive.m @@ -0,0 +1,18 @@ +// RUN: %clang_cc1 -E %s -o %t.mm +// RUN: %clang -fms-extensions -rewrite-objc %t.mm -o %t-rw.cpp +// RUN: FileCheck -check-prefix LP --input-file=%t-rw.cpp %s +// RUN: %clang -g -fms-extensions -rewrite-objc %t.mm -o %t-rw.cpp +// RUN: FileCheck -check-prefix LPG --input-file=%t-rw.cpp %s +// rdar://13138170 + +int z(); + +int x() { + id foo; + for (id y in foo) { + z(); + } + return 0; +} +// CHECK-LP-NOT: #line +// CHECK-LPG: #line