






int
main (void)
{
  int a, b, c, d;

  a = b << c + d;
  return 0;
}

   1: AST_TYPE_Atom 0 4  [[typeinfo=0]]
   6: AST_TAG "main" (c[9].s)  [[typeinfo=0]]
  10: AST_Scope [133] -1 1  [[typeinfo=0]]
  16: AST_TYPE_Atom 0 4  [[typeinfo=0]]
  21: AST_TAG "a" (c[21].s)  [[typeinfo=0]]
  25: AST_TAG "b" (c[24].s)  [[typeinfo=0]]
  29: AST_TAG "c" (c[27].s)  [[typeinfo=0]]
  33: AST_TAG "d" (c[30].s)  [[typeinfo=0]]
  37: AST_Declare [33] [16]  [[typeinfo=0]]
  42: AST_SEQ [37] [-1]  [[typeinfo=0]]
  47: AST_Declare [29] [16]  [[typeinfo=0]]
  52: AST_SEQ [47] [42]  [[typeinfo=0]]
  57: AST_Declare [25] [16]  [[typeinfo=0]]
  62: AST_SEQ [57] [52]  [[typeinfo=0]]
  67: AST_Declare [21] [16]  [[typeinfo=0]]
  72: AST_SEQ [67] [62]  [[typeinfo=0]]
  77: AST_SEQ [72] [-1]  [[typeinfo=0]]
  82: AST_TAG "a" (c[36].s)  [[typeinfo=0]]
  86: AST_AssignTo [82] [108]  [[typeinfo=0]]
  91: AST_TAG "b" (c[40].s)  [[typeinfo=0]]
  95: AST_TAG "c" (c[45].s)  [[typeinfo=0]]
  99: AST_TAG "d" (c[49].s)  [[typeinfo=0]]
 103: AST_Add [95] [99]  [[typeinfo=0]]
 108: AST_BitLsh [91] [103]  [[typeinfo=0]]
 113: AST_Const 56 0  [[typeinfo=0]]
 118: AST_ReturnResult [113] -1  [[typeinfo=0]]
 123: AST_SEQ [86] [118]  [[typeinfo=0]]
 128: AST_SEQ [77] [123]  [[typeinfo=0]]
 133: AST_SEQ [-1] [128]  [[typeinfo=0]]
 138: AST_DefProc 1 [6] [-1] [10]  [[typeinfo=0]]
 145: AST_SEQ [138] [-1]  [[typeinfo=0]]
 150: AST_Scope [145] -1 0  [[typeinfo=0]]
-----------------
-------------
 150: AST_Scope [145] -1 0  [[typeinfo=-1]]
 145: AST_SEQ [138] [-1]  [[typeinfo=-1]]
 138: AST_DefProc 1 [6] [-1] [10]  [[typeinfo=-1]]
   6: AST_TAG "main"  [[typeinfo=-1]]
  10: AST_Scope [133] 150 1  [[typeinfo=-1]]
 133: AST_SEQ [-1] [128]  [[typeinfo=-1]]
 128: AST_SEQ [77] [123]  [[typeinfo=-1]]
  77: AST_SEQ [72] [-1]  [[typeinfo=-1]]
  72: AST_SEQ [67] [62]  [[typeinfo=-1]]
  67: AST_Declare [21] [16]  [[typeinfo=-1]]
  21: AST_TAG "a"  [[typeinfo=-1]]
  16: AST_TYPE_Atom
  62: AST_SEQ [57] [52]  [[typeinfo=-1]]
  57: AST_Declare [25] [16]  [[typeinfo=-1]]
  25: AST_TAG "b"  [[typeinfo=-1]]
  16: AST_TYPE_Atom
  52: AST_SEQ [47] [42]  [[typeinfo=-1]]
  47: AST_Declare [29] [16]  [[typeinfo=-1]]
  29: AST_TAG "c"  [[typeinfo=-1]]
  16: AST_TYPE_Atom
  42: AST_SEQ [37] [-1]  [[typeinfo=-1]]
  37: AST_Declare [33] [16]  [[typeinfo=-1]]
  33: AST_TAG "d"  [[typeinfo=-1]]
  16: AST_TYPE_Atom
 123: AST_SEQ [86] [118]  [[typeinfo=-1]]
  86: AST_AssignTo [82] [108]  [[typeinfo=16]]
  82: AST_TAG "a"  [[typeinfo=16]]
 108: AST_BitLsh [91] [103]  [[typeinfo=16]]
  91: AST_TAG "b"  [[typeinfo=16]]
 103: AST_Add [95] [99]  [[typeinfo=16]]
  95: AST_TAG "c"  [[typeinfo=16]]
  99: AST_TAG "d"  [[typeinfo=16]]
 118: AST_ReturnResult [113] -1  [[typeinfo=-1]]
 113: AST_Const 0
          PROC     main                                ; AST_DefProc
          PUSH     b                                   ; [[typeinfo=1080]]
          PUSH     c                                   ; [[typeinfo=1080]]
          PUSH     d                                   ; [[typeinfo=1080]]
          ADD                                          ; AST_Add
          LSH                                          ; AST_BitLsh
          POP      a                                   ; [[typeinfo=1080]]
          PUSH     #0                                  ; AST_Const
          RET      1                                   ; Return a result
          RET      0                                   ; Return by dropping through end of proc

