1. 09 May, 2016 5 commits
    • add a test for matrix, fix a variable name · 0c96db5a
      qining authored
    • Resolve comments · 25262b3f
      qining authored
      1. Sink adding noContraction decoration to createBinaryOperation() and
      createUnaryOperation().
      
      2. Fix comments.
      
      3. Remove the #define of my delimiter, use global constant char.
    • Fix the test of precise output function parameter · 1a0d93f4
      qining authored
      Rebase to 5cc344d8 and update the
      expected test result.
    • Precise and noContraction propagation · 9220dbb0
      qining authored
          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.
  2. 06 May, 2016 2 commits
  3. 05 May, 2016 19 commits
  4. 04 May, 2016 14 commits