Mercurial > projects > ldc
annotate tests/mini/callingconv1.d @ 1650:40bd4a0d4870
Update to work with LLVM 2.7.
Removed use of dyn_cast, llvm no compiles
without exceptions and rtti by
default. We do need exceptions for the libconfig stuff, but rtti isn't
necessary (anymore).
Debug info needs to be rewritten, as in LLVM 2.7 the format has
completely changed. To have something to look at while rewriting, the
old code has been wrapped inside #ifndef DISABLE_DEBUG_INFO , this means
that you have to define this to compile at the moment.
Updated tango 0.99.9 patch to include updated EH runtime code, which is
needed for LLVM 2.7 as well.
author | Tomas Lindquist Olsen |
---|---|
date | Wed, 19 May 2010 12:42:32 +0200 |
parents | e92e14690a4f |
children |
rev | line source |
---|---|
526
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
1 module mini.callingconv1; |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
2 |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
3 extern(C) int printf(char*, ...); |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
4 |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
5 float foo(float a, float b) |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
6 { |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
7 return a + b; |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
8 } |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
9 |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
10 void main() |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
11 { |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
12 float a = 1.5; |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
13 float b = 2.5; |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
14 float c; |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
15 |
1034
12b423e17860
Adjust mini tests to use D_InlineAsm
Christian Kamm <kamm incasoftware de>
parents:
741
diff
changeset
|
16 version(D_InlineAsm_X86) |
526
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
17 { |
1448
e92e14690a4f
change mingw32 versioning to version(Windows)
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1447
diff
changeset
|
18 version(Windows) |
1447
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
19 { |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
20 asm |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
21 { |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
22 movss XMM0, [a]; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
23 movss XMM1, [b]; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
24 movss [ESP], XMM1; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
25 movss [ESP]+4, XMM0; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
26 call foo; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
27 fstp [c]-4; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
28 movss XMM0, [c]-4; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
29 movss [c], XMM0; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
30 } |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
31 } else |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
32 { |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
33 |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
34 asm |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
35 { |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
36 mov EAX, [a]; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
37 push EAX; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
38 mov EAX, [b]; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
39 push EAX; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
40 call foo; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
41 fstp c; |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
42 } |
a400b1dd657f
fix assembly code for mingw32 in minitests
Kelly Wilson <wilsonk cpsc.ucalgary.ca>
parents:
1034
diff
changeset
|
43 } |
526
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
44 } |
1034
12b423e17860
Adjust mini tests to use D_InlineAsm
Christian Kamm <kamm incasoftware de>
parents:
741
diff
changeset
|
45 else version(D_InlineAsm_X86_64) |
741
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
46 { |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
47 asm |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
48 { |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
49 movss XMM0, [a]; |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
50 movss XMM1, [b]; |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
51 call foo; |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
52 movss [c], XMM0; |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
53 } |
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
54 } |
526
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
55 printf("%f\n", c); |
741
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
56 |
526
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
57 assert(c == 4.0); |
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
58 |
741
4ac97ec7c18e
Applied easy part from wilsonk's x86-64 patch in #107
Christian Kamm <kamm incasoftware de>
parents:
526
diff
changeset
|
59 printf("passed %f\n", c); |
526
642f6fa854e5
First step towards D abi compliance.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff
changeset
|
60 } |