aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCharles Davis <cdavis@mines.edu>2011-05-24 21:22:53 +0000
committerCharles Davis <cdavis@mines.edu>2011-05-24 21:22:53 +0000
commit40de0e013a456971697491b428fb903570e8766e (patch)
tree77612e0d44b8fee9e4ed35add72d2884ecad3033
parentce98deb9f512070fe82518594550dd030b26dd96 (diff)
downloadexternal_llvm-40de0e013a456971697491b428fb903570e8766e.zip
external_llvm-40de0e013a456971697491b428fb903570e8766e.tar.gz
external_llvm-40de0e013a456971697491b428fb903570e8766e.tar.bz2
Test basic SEH directive-parsing functionality. Fix a latent bug exposed by
this test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132004 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/MC/MCStreamer.cpp3
-rw-r--r--test/MC/AsmParser/directive_seh.s18
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp
index 1402033..19aeaaf 100644
--- a/lib/MC/MCStreamer.cpp
+++ b/lib/MC/MCStreamer.cpp
@@ -21,7 +21,8 @@
using namespace llvm;
MCStreamer::MCStreamer(MCContext &Ctx) : Context(Ctx), EmitEHFrame(true),
- EmitDebugFrame(false) {
+ EmitDebugFrame(false),
+ CurrentW64UnwindInfo(0) {
const MCSection *section = NULL;
SectionStack.push_back(std::make_pair(section, section));
}
diff --git a/test/MC/AsmParser/directive_seh.s b/test/MC/AsmParser/directive_seh.s
new file mode 100644
index 0000000..5fd2efa
--- /dev/null
+++ b/test/MC/AsmParser/directive_seh.s
@@ -0,0 +1,18 @@
+# RUN: llvm-mc -triple x86_64-pc-win32 %s | FileCheck %s
+
+# CHECK: .seh_proc func
+# CHECK: .seh_stackalloc 8
+# CHECK: .seh_endprologue
+# CHECK: .seh_endproc
+
+ .text
+ .globl func
+ .def func; .scl 2; .type 32; .endef
+ .seh_proc func
+func:
+ subq $8, %rsp
+ .seh_stackalloc 8
+ .seh_endprologue
+ addq $8, %rsp
+ ret
+ .seh_endproc