annotate tests/mini/nested6a.d @ 920:545f54041d91

Implemented proper support for naked asm using llvm module level asm. Still not 100% complete, but already 1000 times better that what we had before. Don's BignumX86 implementation from Tango (when turned into a standalone unittest) seems to fully work with no changes, and great performance :) Fixed align N; in asm blocks. Fixed inreg parameter passing on x86 for ref/out params. Removed support for lazy initialization of function local static variables, I have no idea why I ever implemented this, it's not in the D spec, and DMD doesn't support it :P Some of the global variable related changes might cause minor regressions, but they should be easily fixable.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Tue, 03 Feb 2009 08:54:57 +0100
parents 45a67b6f1310
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
1 module nested6a;
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
2 extern(C) int printf(char*, ...);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
3
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
4 void main()
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
5 {
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
6 int i = 42;
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
7
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
8 printf("main() %d\n", i++);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
9
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
10 class C
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
11 {
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
12 int j;
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
13 void func()
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
14 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
15 int k;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
16 printf("C.func() %d\n", i++);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
17
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
18 class C2
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
19 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
20 int l;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
21 void func2()
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
22 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
23 printf("in C2.func2()\n");
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
24 printf("C2.func2() %d\n", i++);
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
25 }
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
26 int m;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
27 }
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
28
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
29 {
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
30 printf("new C2\n");
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
31 auto c2 = new C2;
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
32 printf("C2.func2()\n");
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
33 c2.func2();
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
34 }
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
35 int n;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
36 }
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
37 int o;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
38 }
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
39
468
45a67b6f1310 Removed the 'needsstorage' thing from Dsymbol. Arguments are not always given storage when applicable. This is not longer treat specially
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 370
diff changeset
40 auto c = new C;
370
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
41 c.func();
051ab876fe11 [svn r391] Fix classes nested inside functions for real.
ChristianK
parents:
diff changeset
42 }