Fix '-main-file-name <name>' so that it is used for the ModuleID.
authorRobert Lytton <robert@xmos.com>
Fri, 23 May 2014 07:34:08 +0000 (07:34 +0000)
committerRobert Lytton <robert@xmos.com>
Fri, 23 May 2014 07:34:08 +0000 (07:34 +0000)
Summary:
Previously, you could not specify the original file name when passing a preprocessed file into the compiler
Now you can use 'clang -Xclang -main-file-name -Xclang <original file name> ...'
Or 'clang -cc1 -main-file-name <original file name> ...'

llvm-svn: 209503

clang/lib/CodeGen/CodeGenAction.cpp
clang/test/CodeGen/main-file-name.c [new file with mode: 0644]

index 2d08c22..5c0b6a9 100644 (file)
@@ -551,9 +551,12 @@ ASTConsumer *CodeGenAction::CreateASTConsumer(CompilerInstance &CI,
     LinkModuleToUse = ModuleOrErr.get();
   }
 
+  StringRef MainFileName = getCompilerInstance().getCodeGenOpts().MainFileName;
+  if (MainFileName.empty())
+    MainFileName = InFile;
   BEConsumer = new BackendConsumer(BA, CI.getDiagnostics(), CI.getCodeGenOpts(),
                                    CI.getTargetOpts(), CI.getLangOpts(),
-                                   CI.getFrontendOpts().ShowTimers, InFile,
+                                   CI.getFrontendOpts().ShowTimers, MainFileName,
                                    LinkModuleToUse, OS.release(), *VMContext);
   return BEConsumer;
 }
diff --git a/clang/test/CodeGen/main-file-name.c b/clang/test/CodeGen/main-file-name.c
new file mode 100644 (file)
index 0000000..83e2fe3
--- /dev/null
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
+// RUN: %clang_cc1 -emit-llvm -o - %s -main-file-name some.name | FileCheck -check-prefix NAMED %s
+
+// CHECK: ; ModuleID = '{{.*}}main-file-name.c'
+// NAMED: ; ModuleID = 'some.name'
+