1 /**
2  * Declarations for back-end functions that the front-end invokes.
3  *
4  * This 'glues' either the DMC or GCC back-end to the front-end.
5  *
6  * Copyright:   Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved
7  * Authors:     $(LINK2 https://www.digitalmars.com, Walter Bright)
8  * License:     $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
9  * Source:      $(LINK2 https://github.com/dlang/dmd/blob/master/src/dmd/gluelayer.d, _gluelayer.d)
10  * Documentation:  https://dlang.org/phobos/dmd_gluelayer.html
11  * Coverage:    https://codecov.io/gh/dlang/dmd/src/master/src/dmd/gluelayer.d
12  */
13 
14 module dmd.gluelayer;
15 
16 import dmd.dmodule;
17 import dmd.dscope;
18 import dmd.dsymbol;
19 import dmd.mtype;
20 import dmd.statement;
21 import dmd.root.file;
22 
23 version (NoBackend)
24 {
25     struct Symbol;
26     struct code;
27     struct block;
28     struct Blockx;
29     struct elem;
30     struct TYPE;
31     alias type = TYPE;
32 
33     extern (C++)
34     {
35         // iasm
36         Statement asmSemantic(AsmStatement s, Scope* sc)
37         {
38             sc.func.hasReturnExp = 8;
39             return null;
40         }
41 
42         extern(C++) abstract class ObjcGlue
43         {
44             static void initialize() {}
45         }
46     }
47 }
48 else version (IN_GCC)
49 {
50     extern (C++) union tree_node;
51 
52     alias Symbol = tree_node;
53     alias code = tree_node;
54     alias type = tree_node;
55 
56     extern (C++)
57     {
58         Statement asmSemantic(AsmStatement s, Scope* sc);
59     }
60 
61     // stubs
62     extern(C++) abstract class ObjcGlue
63     {
64         static void initialize() {}
65     }
66 }
67 else
68 {
69     public import dmd.backend.cc : block, Blockx, Symbol;
70     public import dmd.backend.type : type;
71     public import dmd.backend.el : elem;
72     public import dmd.backend.code_x86 : code;
73     public import dmd.iasm : asmSemantic;
74     public import dmd.objc_glue : ObjcGlue;
75 }