glslang-zig/glslang/MachineIndependent
qining 9220dbb078 Precise and noContraction propagation
Reimplement the whole workflow to make that: precise'ness of struct
    members won't spread to other non-precise members of the same struct
    instance.

    Approach:
    1. Build the map from symbols to their defining nodes. And for each
    object node (StructIndex, DirectIndex, Symbol nodes, etc), generates an
    accesschain path. Different AST nodes that indicating a same object
    should have the same accesschain path.

    2. Along the building phase in step 1, collect the initial set of
    'precise' (AST qualifier: 'noContraction') objects' accesschain paths.

    3. Start with the initial set of 'precise' accesschain paths, use it as
    a worklist, do as the following steps until the worklist is empty:

        1) Pop an accesschain path from worklist.
        2) Get the symbol part from the accesschain path.
        3) Find the defining nodes of that symbol.
        4) For each defining node, check whether it is defining a 'precise'
        object, or its assignee has nested 'precise' object. Get the
        incremental path from assignee to its nested 'precise' object (if
        any).
        5) Traverse the right side of the defining node, obtain the
        accesschain paths of the corresponding involved 'precise' objects.
        Update the worklist with those new objects' accesschain paths.
        Label involved operations with 'noContraction'.

    In each step, whenever we find the parent object of an nested object is
    'precise' (has 'noContraction' qualifier), we let the nested object
    inherit the 'precise'ness from its parent object.
2016-05-09 10:46:40 -04:00
..
preprocessor Use strtoll, as stoll is unavailable on Android. 2016-05-05 13:46:51 -04:00
Constant.cpp Implement the extension GL_ARB_gpu_shader_int64 2016-04-30 13:34:34 +08:00
gl_types.h Implement the extension GL_ARB_gpu_shader_int64 2016-04-30 13:34:34 +08:00
glslang.y Parser: Precise: Recognize 'precise', tag types, and do related semantic checking. 2016-05-04 12:54:56 -06:00
glslang_tab.cpp Parser: Precise: Recognize 'precise', tag types, and do related semantic checking. 2016-05-04 12:54:56 -06:00
glslang_tab.cpp.h Bison: Non-functional: Move to revision 3.0.4. 2016-05-04 12:54:56 -06:00
InfoSink.cpp Fix the few non-portable uses of "char" (where a -1 might be relevant): All uses of char are now either "int", "unsigned char" or char arrays for storing strings. Also, went to consistent "char* foo" coding convention. (There were only a few ambiguous uses.) 2014-02-18 23:37:57 +00:00
Initialize.cpp Merge branch 'feature2' of https://github.com/amdrexu/glslang into amdrexu-feature2 2016-05-05 16:32:39 -06:00
Initialize.h SPV: Implement Vulkan version of GLSL (KHR_vulkan_glsl). 2016-02-15 21:46:55 -07:00
Intermediate.cpp Precise and noContraction propagation 2016-05-09 10:46:40 -04:00
intermOut.cpp Merge branch 'feature2' of https://github.com/amdrexu/glslang into amdrexu-feature2 2016-05-05 16:32:39 -06:00
IntermTraverse.cpp Comments only. 2016-05-06 13:06:11 -06:00
limits.cpp Array of Array prep: Turn a batch of 0's into nullptr or UnsizedArraySize. 2015-08-09 18:15:25 -06:00
linkValidate.cpp Parser: Precise: Recognize 'precise', tag types, and do related semantic checking. 2016-05-04 12:54:56 -06:00
localintermediate.h Implement the extension GL_ARB_gpu_shader_int64 2016-04-30 13:34:34 +08:00
parseConst.cpp glslang: Fix over 100 warnings from MSVC warning level 4. 2015-05-15 17:30:55 +00:00
ParseHelper.cpp Front-End: precise: capture noContraction on output parameter declarations. 2016-05-05 13:36:55 -06:00
ParseHelper.h Correct precision qualification on built-in functions. 2016-05-03 19:34:00 -06:00
parseVersions.h Vulkan: Add the #define VULKAN 100 when compiled for Vulkan. 2016-05-03 21:18:59 -06:00
PoolAlloc.cpp Support compilation via MinGW 2016-03-16 15:41:31 -04:00
propagateNoContraction.cpp Precise and noContraction propagation 2016-05-09 10:46:40 -04:00
propagateNoContraction.h Precise and noContraction propagation 2016-05-09 10:46:40 -04:00
reflection.cpp Implement the extension GL_ARB_gpu_shader_int64 2016-04-30 13:34:34 +08:00
reflection.h Fix g++ build break (portibility problems with stl hash). This partly turns off the stl improvements. 2015-07-20 02:06:22 -06:00
RemoveTree.cpp Improvement to the AST traversal infrastructure. 2014-01-11 19:29:55 +00:00
RemoveTree.h Put all glslang internals (but not the external interface) into the glslang namespace. 2013-08-29 00:39:25 +00:00
Scan.cpp Implement the extension GL_ARB_gpu_shader_int64 2016-04-30 13:34:34 +08:00
Scan.h add .err file for eof_missing test 2016-04-27 10:22:22 -04:00
ScanContext.h Refactor TParseContext into 3 level inheritance. 2016-03-12 19:08:55 -07:00
ShaderLang.cpp Vulkan: Add the #define VULKAN 100 when compiled for Vulkan. 2016-05-03 21:18:59 -06:00
SymbolTable.cpp Implement the extension GL_ARB_gpu_shader_int64 2016-04-30 13:34:34 +08:00
SymbolTable.h Front-end: Add specialization-constant subtrees for const variables/symbols. 2016-03-20 16:46:00 -06:00
Versions.cpp Merge branch 'feature2' of https://github.com/amdrexu/glslang into amdrexu-feature2 2016-05-05 16:32:39 -06:00
Versions.h Merge branch 'feature2' of https://github.com/amdrexu/glslang into amdrexu-feature2 2016-05-05 16:32:39 -06:00