aboutsummaryrefslogtreecommitdiff
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
commitf4ce8fde1882c2dc00f1df754ef71091e16db2ac (patch)
treefe12ab4bfb0c804e7e39001a4504efaec43f6aa8
parent2db176c4c1ceb860c41dec40db24a734d563db8a (diff)
downloadllvm-f4ce8fde1882c2dc00f1df754ef71091e16db2ac.zip
llvm-f4ce8fde1882c2dc00f1df754ef71091e16db2ac.tar.gz
llvm-f4ce8fde1882c2dc00f1df754ef71091e16db2ac.tar.bz2
Test basic SEH directive-parsing functionality. Fix a latent bug exposed by
this test. llvm-svn: 132004
-rw-r--r--llvm/lib/MC/MCStreamer.cpp3
-rw-r--r--llvm/test/MC/AsmParser/directive_seh.s18
2 files changed, 20 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp
index 1402033d..19aeaaf 100644
--- a/llvm/lib/MC/MCStreamer.cpp
+++ b/llvm/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/llvm/test/MC/AsmParser/directive_seh.s b/llvm/test/MC/AsmParser/directive_seh.s
new file mode 100644
index 0000000..5fd2efa
--- /dev/null
+++ b/llvm/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