summaryrefslogtreecommitdiff
path: root/test/MC
diff options
context:
space:
mode:
authorCharles Davis <cdavis@mines.edu>2011-05-25 21:43:45 +0000
committerCharles Davis <cdavis@mines.edu>2011-05-25 21:43:45 +0000
commit410ef2b263e92d3de1b2acff7437059400daed7d (patch)
tree7ef4c026f98f34a6c6c4b99110ff0ceb933cf438 /test/MC
parent7bb1c4054986e51682ff89170c740cc16b921236 (diff)
downloadllvm-410ef2b263e92d3de1b2acff7437059400daed7d.tar.gz
llvm-410ef2b263e92d3de1b2acff7437059400daed7d.tar.bz2
llvm-410ef2b263e92d3de1b2acff7437059400daed7d.tar.xz
Add tests for .seh_setframe and .seh_handlerdata parsing. Fix issues with
them. I had to add a special SwitchSectionNoChange method to MCStreamer just for .seh_handlerdata. If this isn't OK, please let me know, and I'll find some other way to fix .seh_handlerdata streaming. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132084 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r--test/MC/AsmParser/directive_seh.s14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/MC/AsmParser/directive_seh.s b/test/MC/AsmParser/directive_seh.s
index 8b27542fb3..d4f7625e88 100644
--- a/test/MC/AsmParser/directive_seh.s
+++ b/test/MC/AsmParser/directive_seh.s
@@ -5,8 +5,13 @@
# CHECK: .seh_stackalloc 24
# CHECK: .seh_savereg 6, 16
# CHECK: .seh_savexmm 8, 0
+# CHECK: .seh_pushreg 3
+# CHECK: .seh_setframe 3, 0
# CHECK: .seh_endprologue
# CHECK: .seh_handler __C_specific_handler, @except
+# CHECK-NOT: .section{{.*}}.xdata
+# CHECK: .seh_handlerdata
+# CHECK: .text
# CHECK: .seh_endproc
.text
@@ -21,8 +26,17 @@ func:
.seh_savereg %rsi, 16
movups %xmm8, (%rsp)
.seh_savexmm %xmm8, 0
+ pushq %rbx
+ .seh_pushreg 3
+ mov %rsp, %rbx
+ .seh_setframe 3, 0
.seh_endprologue
.seh_handler __C_specific_handler, @except
+ .seh_handlerdata
+ .long 0
+ .text
+ lea (%rbx), %rsp
+ pop %rbx
addq $24, %rsp
ret
.seh_endproc