Author: Paul Robinson Date: 2023-10-24T09:08:31-07:00 New Revision: 513b950a79d0e92af1baa969207dd296068a71b9
URL: https://github.com/llvm/llvm-project/commit/513b950a79d0e92af1baa969207dd296068a71b9 DIFF: https://github.com/llvm/llvm-project/commit/513b950a79d0e92af1baa969207dd296068a71b9.diff LOG: Make -frewrite-includes handle -include correctly The `-include "file"` option implicitly adds a leading #include to the main source; however, there's no explicit #include, which left -frewrite-includes emitting an unmatched #endif at the end of the included text. This corrects a bug in 4a16b51f. Added: Modified: clang/lib/Frontend/Rewrite/InclusionRewriter.cpp clang/test/Frontend/rewrite-includes-cli-include.c Removed: ################################################################################ diff --git a/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp b/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp index 28f7b0b9edfc5c2..2c3a253a67d5c93 100644 --- a/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp +++ b/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp @@ -444,8 +444,11 @@ void InclusionRewriter::Process(FileID FileId, if (Mod) OS << "#pragma clang module end /*" << Mod->getFullModuleName(true) << "*/\n"; - OS << "#endif /* " << getIncludedFileName(Inc) - << " expanded by -frewrite-includes */" << LocalEOL; + // There's no #include, therefore no #if, for -include files. + if (FromFile != PredefinesBuffer) { + OS << "#endif /* " << getIncludedFileName(Inc) + << " expanded by -frewrite-includes */" << LocalEOL; + } // Add line marker to indicate we're returning from an included // file. diff --git a/clang/test/Frontend/rewrite-includes-cli-include.c b/clang/test/Frontend/rewrite-includes-cli-include.c index 437bc2ffadf1960..d63f966f79ca6af 100644 --- a/clang/test/Frontend/rewrite-includes-cli-include.c +++ b/clang/test/Frontend/rewrite-includes-cli-include.c @@ -3,7 +3,6 @@ main_file_line // CHECK: {{^}}# 1 "<built-in>"{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes2.h" 1{{$}} // CHECK-NEXT: {{^}}int included_line2;{{$}} -// CHECK-NEXT: {{^}}#endif /* rewrite-includes2.h expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}# 1 "<built-in>" 2{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*}}rewrite-includes-cli-include.c"{{$}} // CHECK-NEXT: FileCheck _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits