Mercurial > projects > dstress
annotate run/b/bug_glue_387_A.d @ 1630:d0efa3ae5522 default tip
run/mini/naked_asm5: New x86_64 ABI passes the arguments in reverse order.
author | David Nadlinger <code@klickverbot.at> |
---|---|
date | Sat, 23 Apr 2011 22:57:32 +0200 |
parents | b8c0195059d9 |
children |
rev | line source |
---|---|
614
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
1 // $HeadURL$ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
2 // $Date$ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
3 // $Author$ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
4 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
5 // @author@ Sean Kelly <sean@f4.ca> |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
6 // @date@ 2005-08-01 |
1489 | 7 // @uri@ http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.bugs&artnum=4658 |
614
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
8 // @desc@ Assertion failure: '!v->csym' on line 387 in file 'glue.c' |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
9 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
10 module dstress.run.b.bug_glue_387_A; |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
11 |
1089 | 12 version(D_InlineAsm_X86){ |
1397 | 13 }else version(D_InlineAsm_X86_64){ |
1089 | 14 }else{ |
15 pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); | |
16 static assert(0); | |
17 } | |
18 | |
614
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
19 enum msync{ |
1091 | 20 acq, |
21 rel, | |
614
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
22 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
23 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
24 template atomicStore(T, msync ms){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
25 void atomicStore(T val){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
26 volatile asm{ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
27 mov EAX, val; |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
28 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
29 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
30 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
31 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
32 struct Atomic(T){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
33 template store(msync ms){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
34 void store(){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
35 atomicStore!(T, ms)(m_val); |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
36 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
37 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
38 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
39 T m_val; |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
40 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
41 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
42 template testStore(T, msync ms){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
43 void testStore(){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
44 T base; |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
45 Atomic!(T) atom; |
1089 | 46 if(atom.m_val != base){ |
47 assert(0); | |
48 } | |
614
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
49 atom.store!(ms)(); |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
50 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
51 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
52 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
53 template testType(T){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
54 void testType(){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
55 testStore!(T, msync.acq)(); |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
56 testStore!(T, msync.rel)(); |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
57 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
58 } |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
59 |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
60 int main(){ |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
61 testType!(int)(); |
e375e824c620
Assertion failure: '!v->csym' on line 387 in file 'glue.c'
thomask
parents:
diff
changeset
|
62 return 0; |
1089 | 63 } |