[cfe-commits] r74304 - in /cfe/trunk: lib/CodeGen/CGDebugInfo.cpp lib/CodeGen/CGDebugInfo.h test/CodeGen/2009-06-16-inc_test.c test/CodeGen/2009-06-16-test.c
Devang Patel
dpatel at apple.com
Fri Jun 26 11:32:22 PDT 2009
Author: dpatel
Date: Fri Jun 26 13:32:22 2009
New Revision: 74304
URL: http://llvm.org/viewvc/llvm-project?rev=74304&view=rev
Log:
Revrt PR4228 fix for now.
Modified:
cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
cfe/trunk/lib/CodeGen/CGDebugInfo.h
cfe/trunk/test/CodeGen/2009-06-16-inc_test.c
cfe/trunk/test/CodeGen/2009-06-16-test.c
Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=74304&r1=74303&r2=74304&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri Jun 26 13:32:22 2009
@@ -50,24 +50,6 @@
/// getOrCreateCompileUnit - Get the compile unit from the cache or create a new
/// one if necessary. This returns null for invalid source locations.
llvm::DICompileUnit CGDebugInfo::getOrCreateCompileUnit(SourceLocation Loc) {
-
- // Each input file is encoded as a separate compile unit in LLVM
- // debugging information output. However, many target specific tool chains
- // prefer to encode only one compile unit in an object file. In this
- // situation, the LLVM code generator will include debugging information
- // entities in the compile unit that is marked as main compile unit. The
- // code generator accepts maximum one main compile unit per module. If a
- // module does not contain any main compile unit then the code generator
- // will emit multiple compile units in the output object file. Create main
- // compile unit if there is not one available.
- const LangOptions &LO = M->getLangOptions();
- if (isMainCompileUnitCreated == false) {
- if (LO.getMainFileName()) {
- createCompileUnit(LO.getMainFileName(), true /* isMain */);
- isMainCompileUnitCreated = true;
- }
- }
-
// Get source file information.
const char *FileName = "<unknown>";
SourceManager &SM = M->getContext().getSourceManager();
@@ -90,26 +72,25 @@
AbsFileName = tmp;
}
- // There is only one main source file at a time whose compile unit
- // is already created.
- Unit = createCompileUnit(FileName, false /* isMain */);
- return Unit;
-}
-
-/// createCompileUnit - Create a new unit for the given file.
-llvm::DICompileUnit CGDebugInfo::createCompileUnit(const char *FileName,
- bool isMain) {
-
- // Get absolute path name.
- llvm::sys::Path AbsFileName(FileName);
- if (!AbsFileName.isAbsolute()) {
- llvm::sys::Path tmp = llvm::sys::Path::GetCurrentDirectory();
- tmp.appendComponent(FileName);
- AbsFileName = tmp;
+ // See if thie compile unit is representing main source file. Each source
+ // file has corresponding compile unit. There is only one main source
+ // file at a time.
+ bool isMain = false;
+ const LangOptions &LO = M->getLangOptions();
+ const char *MainFileName = LO.getMainFileName();
+ if (isMainCompileUnitCreated == false) {
+ if (MainFileName) {
+ if (!strcmp(AbsFileName.getLast().c_str(), MainFileName))
+ isMain = true;
+ } else {
+ if (Loc.isValid() && SM.isFromMainFile(Loc))
+ isMain = true;
+ }
+ if (isMain)
+ isMainCompileUnitCreated = true;
}
unsigned LangTag;
- const LangOptions &LO = M->getLangOptions();
if (LO.CPlusPlus) {
if (LO.ObjC1)
LangTag = llvm::dwarf::DW_LANG_ObjC_plus_plus;
@@ -133,13 +114,12 @@
RuntimeVers = LO.ObjCNonFragileABI ? 2 : 1;
// Create new compile unit.
- return DebugFactory.CreateCompileUnit(LangTag, AbsFileName.getLast(),
- AbsFileName.getDirname(),
- Producer, isMain, isOptimized,
- Flags, RuntimeVers);
+ return Unit = DebugFactory.CreateCompileUnit(LangTag, AbsFileName.getLast(),
+ AbsFileName.getDirname(),
+ Producer, isMain, isOptimized,
+ Flags, RuntimeVers);
}
-
/// CreateType - Get the Basic type from the cache or create a new
/// one if necessary.
llvm::DIType CGDebugInfo::CreateType(const BuiltinType *BT,
Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=74304&r1=74303&r2=74304&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.h (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.h Fri Jun 26 13:32:22 2009
@@ -111,9 +111,7 @@
void EmitDeclare(const VarDecl *decl, unsigned Tag, llvm::Value *AI,
CGBuilderTy &Builder);
- /// createCompileUnit - Create a new unit for the given file.
- llvm::DICompileUnit createCompileUnit(const char *FileName, bool isMain);
-
+
/// getOrCreateCompileUnit - Get the compile unit from the cache or create a
/// new one if necessary.
llvm::DICompileUnit getOrCreateCompileUnit(SourceLocation Loc);
Modified: cfe/trunk/test/CodeGen/2009-06-16-inc_test.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2009-06-16-inc_test.c?rev=74304&r1=74303&r2=74304&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/2009-06-16-inc_test.c (original)
+++ cfe/trunk/test/CodeGen/2009-06-16-inc_test.c Fri Jun 26 13:32:22 2009
@@ -1,3 +0,0 @@
-// RUN: clang -c -g %s -o /dev/null
-// PR 4228
-#include "2009-06-16-test.c"
Modified: cfe/trunk/test/CodeGen/2009-06-16-test.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/2009-06-16-test.c?rev=74304&r1=74303&r2=74304&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/2009-06-16-test.c (original)
+++ cfe/trunk/test/CodeGen/2009-06-16-test.c Fri Jun 26 13:32:22 2009
@@ -1,15 +0,0 @@
-
-#ifndef TEST
-#define TEST
-#define INSIDE_RECURSION
-#include "2009-06-16-test.c"
-#undef INSIDE_RECURSION
-#endif
-
-#ifndef INSIDE_RECURSION
-int i;
-#endif
-
-#ifdef INSIDE_RECURSION
-int j;
-#endif
More information about the cfe-commits
mailing list