blob: 92a301c5a6f8416c60f10b520c3dea85ab84bebd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// slang-ir-link.h
#pragma once
#include "slang-compiler.h"
namespace Slang
{
struct IRVarLayout;
struct LinkedIR
{
RefPtr<IRModule> module;
IRVarLayout* globalScopeVarLayout;
List<IRFunc*> entryPoints;
};
// Clone the IR values reachable from the given entry point
// into the IR module associated with the specialization state.
// When multiple definitions of a symbol are found, the one
// that is best specialized for the appropriate compilation
// target will be used.
//
LinkedIR linkIR(
BackEndCompileRequest* compileRequest,
const List<Int>& entryPointIndices,
CodeGenTarget target,
TargetProgram* targetProgram);
// Replace any global constants in the IR module with their
// definitions, if possible.
//
// This pass should always be run shortly after linking the
// IR, to ensure that constants with identical values are
// treated as identical for the purposes of specialization.
//
void replaceGlobalConstants(IRModule* module);
}
|