aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2012-08-23 22:36:40 +0000
committerEric Christopher <echristo@apple.com>2012-08-23 22:36:40 +0000
commit20f47ab7688ba1e5e4c6af4be47c2f07ee4e9ab6 (patch)
treeec1a714284c0c854082786dc7ebcb922c824c817 /lib/CodeGen
parentc1610fa3c43befd489cd41e358bfa48323594266 (diff)
Turn these two options in to trinary state so that they can be
turned on and off separate from the platform if you're on darwin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162487 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.cpp54
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.h3
2 files changed, 42 insertions, 15 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 1991785b11..fb4ae0f926 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -54,13 +54,29 @@ static cl::opt<bool> UnknownLocations("use-unknown-locations", cl::Hidden,
cl::desc("Make an absence of debug location information explicit."),
cl::init(false));
-static cl::opt<bool> DwarfAccelTables("dwarf-accel-tables", cl::Hidden,
- cl::desc("Output prototype dwarf accelerator tables."),
- cl::init(false));
+namespace {
+ enum DefaultOnOff {
+ Default, Enable, Disable
+ };
+}
-static cl::opt<bool> DarwinGDBCompat("darwin-gdb-compat", cl::Hidden,
+static cl::opt<DefaultOnOff> DwarfAccelTables("dwarf-accel-tables", cl::Hidden,
+ cl::desc("Output prototype dwarf accelerator tables."),
+ cl::values(
+ clEnumVal(Default, "Default for platform"),
+ clEnumVal(Enable, "Enabled"),
+ clEnumVal(Disable, "Disabled"),
+ clEnumValEnd),
+ cl::init(Default));
+
+static cl::opt<DefaultOnOff> DarwinGDBCompat("darwin-gdb-compat", cl::Hidden,
cl::desc("Compatibility with Darwin gdb."),
- cl::init(false));
+ cl::values(
+ clEnumVal(Default, "Default for platform"),
+ clEnumVal(Enable, "Enabled"),
+ clEnumVal(Disable, "Disabled"),
+ clEnumValEnd),
+ cl::init(Default));
namespace {
const char *DWARFGroupName = "DWARF Emission";
@@ -141,13 +157,23 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
// Turn on accelerator tables and older gdb compatibility
// for Darwin.
- if (Triple(M->getTargetTriple()).isOSDarwin()) {
- DwarfAccelTables = true;
- DarwinGDBCompat = true;
- }
+ bool isDarwin = Triple(M->getTargetTriple()).isOSDarwin();
+ if (DarwinGDBCompat == Default) {
+ if (isDarwin)
+ isDarwinGDBCompat = true;
+ else
+ isDarwinGDBCompat = false;
+ } else
+ isDarwinGDBCompat = DarwinGDBCompat == Enable ? true : false;
+
+ if (DwarfAccelTables == Default) {
+ if (isDarwin)
+ hasDwarfAccelTables = true;
+ else
+ hasDwarfAccelTables = false;
+ } else
+ hasDwarfAccelTables = DwarfAccelTables == Enable ? true : false;
- isDarwinGDBCompat = DarwinGDBCompat;
-
{
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
beginModule(M);
@@ -826,7 +852,7 @@ void DwarfDebug::endModule() {
emitAbbreviations();
// Emit info into the dwarf accelerator table sections.
- if (DwarfAccelTables) {
+ if (useDwarfAccelTables()) {
emitAccelNames();
emitAccelObjC();
emitAccelNamespaces();
@@ -836,7 +862,7 @@ void DwarfDebug::endModule() {
// Emit info into a debug pubtypes section.
// TODO: When we don't need the option anymore we can
// remove all of the code that adds to the table.
- if (DarwinGDBCompat)
+ if (useDarwinGDBCompat())
emitDebugPubTypes();
// Emit info into a debug loc section.
@@ -855,7 +881,7 @@ void DwarfDebug::endModule() {
// TODO: When we don't need the option anymore we
// can remove all of the code that this section
// depends upon.
- if (DarwinGDBCompat)
+ if (useDarwinGDBCompat())
emitDebugInlineInfo();
// Emit info into a debug str section.
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h
index 78c871688e..f94c9d0b4b 100644
--- a/lib/CodeGen/AsmPrinter/DwarfDebug.h
+++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h
@@ -309,7 +309,7 @@ class DwarfDebug {
// A holder for the DarwinGDBCompat flag so that the compile unit can use it.
bool isDarwinGDBCompat;
-
+ bool hasDwarfAccelTables;
private:
/// assignAbbrevNumber - Define a unique number for the abbreviation.
@@ -527,6 +527,7 @@ public:
/// useDarwinGDBCompat - returns whether or not to limit some of our debug
/// output to the limitations of darwin gdb.
bool useDarwinGDBCompat() { return isDarwinGDBCompat; }
+ bool useDwarfAccelTables() { return hasDwarfAccelTables; }
};
} // End of namespace llvm