https://github.com/shader-slang/slang
Raw File
Tip revision: d7ba60c993366b4aaf6ef8ee7d8eab940d61eac8 authored by Yong He on 03 April 2023, 03:43:09 UTC
Fix type legalization pass. (#2768)
Tip revision: d7ba60c
slang-ir-link.h
// slang-ir-link.h
#pragma once

#include "slang-compiler.h"

#include "../compiler-core/slang-artifact-associated.h"

namespace Slang
{
    struct IRVarLayout;

    struct LinkedIR
    {
        RefPtr<IRModule>                    module;
        IRVarLayout*                        globalScopeVarLayout;
        List<IRFunc*>                       entryPoints;
        ComPtr<IArtifactPostEmitMetadata>   metadata;
    };


    // 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(
        CodeGenContext* codeGenContext);

    // 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);
}
back to top