aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2008-01-25 00:34:13 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2008-01-25 00:34:13 +0000
commit8eea3392984428930b287aecb160c2feda981a13 (patch)
tree6c511205abc28a0d16d60f94939dab6ee5756bb7
parente205fef3678693c803b069ea00241d2e16a6ea6e (diff)
Provide correct DWARF register numbering for debug information emission on x86-32/Darwin.
This should fix bunch of issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46337 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/X86RegisterInfo.cpp9
-rw-r--r--lib/Target/X86/X86RegisterInfo.h2
-rw-r--r--lib/Target/X86/X86RegisterInfo.td7
3 files changed, 9 insertions, 9 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp
index 56523eb14d..277a09cc15 100644
--- a/lib/Target/X86/X86RegisterInfo.cpp
+++ b/lib/Target/X86/X86RegisterInfo.cpp
@@ -64,12 +64,15 @@ int X86RegisterInfo::getDwarfRegNum(unsigned RegNo, bool isEH) const {
unsigned Flavour = DWARFFlavour::X86_64;
if (!Subtarget->is64Bit()) {
if (Subtarget->isTargetDarwin()) {
- Flavour = DWARFFlavour::X86_32_Darwin;
+ if (isEH)
+ Flavour = DWARFFlavour::X86_32_DarwinEH;
+ else
+ Flavour = DWARFFlavour::X86_32_Generic;
} else if (Subtarget->isTargetCygMing()) {
// Unsupported by now, just quick fallback
- Flavour = DWARFFlavour::X86_32_ELF;
+ Flavour = DWARFFlavour::X86_32_Generic;
} else {
- Flavour = DWARFFlavour::X86_32_ELF;
+ Flavour = DWARFFlavour::X86_32_Generic;
}
}
diff --git a/lib/Target/X86/X86RegisterInfo.h b/lib/Target/X86/X86RegisterInfo.h
index d78311a3b7..16bbf07489 100644
--- a/lib/Target/X86/X86RegisterInfo.h
+++ b/lib/Target/X86/X86RegisterInfo.h
@@ -36,7 +36,7 @@ namespace N86 {
///
namespace DWARFFlavour {
enum {
- X86_64 = 0, X86_32_Darwin = 1, X86_32_ELF = 2
+ X86_64 = 0, X86_32_DarwinEH = 1, X86_32_Generic = 2
};
}
diff --git a/lib/Target/X86/X86RegisterInfo.td b/lib/Target/X86/X86RegisterInfo.td
index dc50905c78..42c7ce7806 100644
--- a/lib/Target/X86/X86RegisterInfo.td
+++ b/lib/Target/X86/X86RegisterInfo.td
@@ -25,11 +25,8 @@ let Namespace = "X86" in {
// Dwarf numbering is different for 32-bit and 64-bit, and there are
// variations by target as well. Currently the first entry is for X86-64,
- // second - for X86-32/Darwin and third for X86-32/Linux
-
- // FIXME: Comments in gcc indicate that Darwin uses different numbering
- // for debug info and exception handling info:( The numbering here is
- // for exception handling.
+ // second - for EH on X86-32/Darwin and third is 'generic' one (X86-32/Linux
+ // and debug information on X86-32/Darwin)
// 8-bit registers
// Low registers