Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
G
glslang
  • Project
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Chen Yisong
  • glslang
  • Repository

Switch branch/tag
  • glslang
  • Test
  • spv.precise.tesc
Find file
BlameHistoryPermalink
  • qining's avatar
    Precise and noContraction propagation · 9220dbb0
    qining authored May 04, 2016
        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.
    9220dbb0
spv.precise.tesc 750 Bytes
EditWeb IDE
×

Replace spv.precise.tesc

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.