(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} 
                  {
                    (CommandSubPart
                      command_list: (CommandList children:[(C {(uname)} {(-s)})])
                      left_token: <Left_Backtick "`">
                      spids: [44 48]
                    )
                  } {(Lit_Other "=")} {(DQ (FreeBSD))} {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:MAKE) op:Equal rhs:{(gmake)} spids:[62])]
              spids: [62]
            )
          ]
          spids: [-1 59]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:MAKE) op:Equal rhs:{(make)} spids:[68])]
          spids: [68]
        )
      ]
      spids: [65 71]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:projects)
          op: Equal
          rhs: {(DQ ("llvm cfe dragonegg test-suite"))}
          spids: [74]
        )
      ]
      spids: [74]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:Base_url)
          op: Equal
          rhs: {(DQ ("http://llvm.org/svn/llvm-project"))}
          spids: [83]
        )
      ]
      spids: [83]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:Release) op:Equal rhs:{(DQ )} spids:[89])]
      spids: [89]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:Release_no_dot) op:Equal rhs:{(DQ )} spids:[93])]
      spids: [93]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RC) op:Equal rhs:{(DQ )} spids:[97])]
      spids: [97]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_checkout) op:Equal rhs:{(DQ (yes))} spids:[101])]
      spids: [101]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_ada) op:Equal rhs:{(DQ (no))} spids:[106])]
      spids: [106]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_objc) op:Equal rhs:{(DQ (yes))} spids:[111])]
      spids: [111]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_fortran) op:Equal rhs:{(DQ (no))} spids:[116])]
      spids: [116]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_64bit) op:Equal rhs:{(DQ (yes))} spids:[121])]
      spids: [121]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_debug) op:Equal rhs:{(DQ (no))} spids:[126])]
      spids: [126]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_asserts) op:Equal rhs:{(DQ (no))} spids:[131])]
      spids: [131]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BuildDir)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(pwd)})])
                  left_token: <Left_Backtick "`">
                  spids: [138 140]
                )
              )
            }
          spids: [136]
        )
      ]
      spids: [136]
    )
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(echo)} 
              {
                (DQ ("usage: ") 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(basename)} {($ VSub_Number "$0")})])
                    left_token: <Left_Backtick "`">
                    spids: [157 161]
                  ) (" -release X.Y -rc NUM [OPTIONS]")
                )
              }
            )
            (C {(echo)} {(DQ )})
            (C {(echo)} {(DQ (" -release X.Y      The release number to test."))})
            (C {(echo)} {(DQ (" -rc NUM           The pre-release candidate number."))})
            (C {(echo)} {(DQ (" -j NUM            Number of compile jobs to run. [default: 3]"))})
            (C {(echo)} {(DQ (" -build-dir DIR    Directory to perform testing in. [default: pwd]"))})
            (C {(echo)} {(DQ (" -no-checkout      Don't checkout the sources from SVN."))})
            (C {(echo)} {(DQ (" -no-64bit         Don't test the 64-bit version. [default: yes]"))})
            (C {(echo)} {(DQ (" -enable-ada       Build Ada. [default: disable]"))})
            (C {(echo)} {(DQ (" -enable-fortran   Enable Fortran build. [default: disable]"))})
            (C {(echo)} {(DQ (" -disable-objc     Disable ObjC build. [default: enable]"))})
            (C {(echo)} {(DQ (" -test-debug       Test the debug build. [default: no]"))})
            (C {(echo)} {(DQ (" -test-asserts     Test with asserts on. [default: no]"))})
          ]
          spids: [150]
        )
      spids: [144 149]
    )
    (While
      cond: [
        (Sentence
          child: (C {(Lit_Other "[")} {($ VSub_Pound "$#")} {(-gt)} {(0)} {(Lit_Other "]")})
          terminator: <Op_Semi ";">
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Number "$1")}
              arms: [
                (case_arm
                  pat_list: [{(-release)} {(--release)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Release)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number "$1"))}
                          spids: [286]
                        )
                      ]
                      spids: [286]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Release_no_dot)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(echo)} {($ VSub_Number "$1")})
                                            (C {(sed)} {(-e)} {(SQ <"s,\\.,,">)})
                                          ]
                                          negated: False
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick "`">
                                  spids: [294 308]
                                )
                              )
                            }
                          spids: [292]
                        )
                      ]
                      spids: [292]
                    )
                  ]
                  spids: [274 280 312 -1]
                )
                (case_arm
                  pat_list: [{(-rc)} {(--rc)} {(-RC)} {(--RC)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RC)
                          op: Equal
                          rhs: {($ VSub_Number "$1")}
                          spids: [335]
                        )
                      ]
                      spids: [335]
                    )
                  ]
                  spids: [315 329 339 -1]
                )
                (case_arm
                  pat_list: [{(-j) (Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NumJobs)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(echo)} {($ VSub_Number "$1")})
                                            (C {(sed)} {(-e)} {(SQ <"s,-j\\([0-9]*\\),\\1,g">)})
                                          ]
                                          negated: False
                                        )
                                      ]
                                    )
                                  left_token: <Left_Backtick "`">
                                  spids: [350 364]
                                )
                              )
                            }
                          spids: [348]
                        )
                      ]
                      spids: [348]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$NumJobs"))} 
                                  {(Lit_Other "]")}
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(shift)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:NumJobs)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number "$1"))}
                                  spids: [387]
                                )
                              ]
                              spids: [387]
                            )
                          ]
                          spids: [-1 381]
                        )
                      ]
                      spids: [-1 393]
                    )
                  ]
                  spids: [342 345 396 -1]
                )
                (case_arm
                  pat_list: [{(-build-dir)} {(--build-dir)} {(-builddir)} {(--builddir)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BuildDir)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number "$1"))}
                          spids: [419]
                        )
                      ]
                      spids: [419]
                    )
                  ]
                  spids: [399 413 425 -1]
                )
                (case_arm
                  pat_list: [{(-no-checkout)} {(--no-checkout)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_checkout)
                          op: Equal
                          rhs: {(DQ (no))}
                          spids: [437]
                        )
                      ]
                      spids: [437]
                    )
                  ]
                  spids: [428 434 443 -1]
                )
                (case_arm
                  pat_list: [{(-no-64bit)} {(--no-64bit)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_64bit)
                          op: Equal
                          rhs: {(DQ (no))}
                          spids: [455]
                        )
                      ]
                      spids: [455]
                    )
                  ]
                  spids: [446 452 461 -1]
                )
                (case_arm
                  pat_list: [{(-enable-ada)} {(--enable-ada)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_ada)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [473]
                        )
                      ]
                      spids: [473]
                    )
                  ]
                  spids: [464 470 479 -1]
                )
                (case_arm
                  pat_list: [{(-enable-fortran)} {(--enable-fortran)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_fortran)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [491]
                        )
                      ]
                      spids: [491]
                    )
                  ]
                  spids: [482 488 497 -1]
                )
                (case_arm
                  pat_list: [{(-disable-objc)} {(--disable-objc)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_objc)
                          op: Equal
                          rhs: {(DQ (no))}
                          spids: [509]
                        )
                      ]
                      spids: [509]
                    )
                  ]
                  spids: [500 506 515 -1]
                )
                (case_arm
                  pat_list: [{(-test-debug)} {(--test-debug)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_debug)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [527]
                        )
                      ]
                      spids: [527]
                    )
                  ]
                  spids: [518 524 533 -1]
                )
                (case_arm
                  pat_list: [{(-test-asserts)} {(--test-asserts)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_asserts)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [545]
                        )
                      ]
                      spids: [545]
                    )
                  ]
                  spids: [536 542 551 -1]
                )
                (case_arm
                  pat_list: [
                    {(-help)}
                    {(--help)}
                    {(-h)}
                    {(--h)}
                    {(-) (EscapedLiteralPart token:<Lit_EscapedChar "\\?">)}
                  ]
                  action: [(C {(usage)}) (C {(exit)} {(0)})]
                  spids: [554 573 584 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (C {(echo)} {(DQ ("unknown option: ") ($ VSub_Number "$1"))})
                    (C {(usage)})
                    (C {(exit)} {(1)})
                  ]
                  spids: [587 589 608 -1]
                )
              ]
              spids: [267 271 611]
            )
            (C {(shift)})
          ]
          spids: [264 616]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$Release"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(echo)} {(DQ ("error: no release number specified"))}) (C {(exit)} {(1)})]
          spids: [-1 635]
        )
      ]
      spids: [-1 649]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$RC"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("error: no release candidate number specified"))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 664]
        )
      ]
      spids: [-1 678]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$NumJobs"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NumJobs)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (AndOr
                                children: [
                                  (SimpleCommand
                                    words: [{(sysctl)} {(-n)} {(hw.activecpu)}]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [708]
                                      )
                                    ]
                                  )
                                  (C {(true)})
                                ]
                                op_id: Op_DPipe
                              )
                            ]
                          )
                        left_token: <Left_Backtick "`">
                        spids: [701 715]
                      )
                    }
                  spids: [700]
                )
              ]
              spids: [700]
            )
          ]
          spids: [-1 697]
        )
      ]
      spids: [-1 717]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$NumJobs"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NumJobs)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (AndOr
                                children: [
                                  (SimpleCommand
                                    words: [{(sysctl)} {(-n)} {(hw.ncpu)}]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [743]
                                      )
                                    ]
                                  )
                                  (C {(true)})
                                ]
                                op_id: Op_DPipe
                              )
                            ]
                          )
                        left_token: <Left_Backtick "`">
                        spids: [736 750]
                      )
                    }
                  spids: [735]
                )
              ]
              spids: [735]
            )
          ]
          spids: [-1 732]
        )
      ]
      spids: [-1 752]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$NumJobs"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NumJobs)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (AndOr
                                children: [
                                  (SimpleCommand
                                    words: [{(grep)} {(-c)} {(processor)} {(/proc/cpuinfo)}]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [780]
                                      )
                                    ]
                                  )
                                  (C {(true)})
                                ]
                                op_id: Op_DPipe
                              )
                            ]
                          )
                        left_token: <Left_Backtick "`">
                        spids: [771 787]
                      )
                    }
                  spids: [770]
                )
              ]
              spids: [770]
            )
          ]
          spids: [-1 767]
        )
      ]
      spids: [-1 789]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$NumJobs"))} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:NumJobs) op:Equal rhs:{(3)} spids:[807])]
              spids: [807]
            )
          ]
          spids: [-1 804]
        )
      ]
      spids: [-1 810]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BuildDir)
          op: Equal
          rhs: {($ VSub_Name "$BuildDir") (/rc) ($ VSub_Name "$RC")}
          spids: [816]
        )
      ]
      spids: [816]
    )
    (C {(mkdir)} {(-p)} {($ VSub_Name "$BuildDir")})
    (C {(cd)} {($ VSub_Name "$BuildDir")})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LogDir)
          op: Equal
          rhs: {($ VSub_Name "$BuildDir") (/logs)}
          spids: [835]
        )
      ]
      spids: [835]
    )
    (C {(mkdir)} {(-p)} {($ VSub_Name "$LogDir")})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:c_compiler)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$CC"))}
          spids: [849]
        )
      ]
      spids: [849]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:cxx_compiler)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$CXX"))}
          spids: [854]
        )
      ]
      spids: [854]
    )
    (FuncDef
      name: check_valid_urls
      body: 
        (BraceGroup
          children: [
            (ForEach
              iter_name: proj
              iter_words: [{($ VSub_Name "$projects")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {(DQ ("# Validating ") ($ VSub_Name "$proj") (" SVN URL"))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (SimpleCommand
                                      words: [
                                        {(svn)}
                                        {(ls)}
                                        {($ VSub_Name "$Base_url") (/) ($ VSub_Name "$proj") 
                                          (/tags/RELEASE_) ($ VSub_Name "$Release_no_dot") (/rc) ($ VSub_Name "$RC")
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: -1
                                          arg_word: {(/dev/null)}
                                          spids: [911]
                                        )
                                        (Redir
                                          op_id: Redir_GreatAnd
                                          fd: 2
                                          arg_word: {(1)}
                                          spids: [915]
                                        )
                                      ]
                                    )
                                  ]
                                  negated: True
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ("llvm ") ($ VSub_Name "$Release") (" release candidate ") 
                                  ($ VSub_Name "$RC") (" doesn't exist!")
                                )
                              }
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 920]
                        )
                      ]
                      spids: [-1 939]
                    )
                  ]
                  spids: [882 942]
                )
              spids: [877 880]
            )
          ]
          spids: [869]
        )
      spids: [863 868]
    )
    (FuncDef
      name: export_sources
      body: 
        (BraceGroup
          children: [
            (C {(check_valid_urls)})
            (ForEach
              iter_name: proj
              iter_words: [{($ VSub_Name "$projects")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} 
                      {
                        (DQ ("# Exporting ") ($ VSub_Name "$proj") (" ") ($ VSub_Name "$Release") (-RC) 
                          ($ VSub_Name "$RC") (" sources")
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (Pipeline
                                  children: [
                                    (C {(svn)} {(export)} {(-q)} 
                                      {($ VSub_Name "$Base_url") (/) ($ VSub_Name "$proj") 
                                        (/tags/RELEASE_) ($ VSub_Name "$Release_no_dot") (/rc) ($ VSub_Name "$RC")
                                      } {($ VSub_Name "$proj") (.src)}
                                    )
                                  ]
                                  negated: True
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {(DQ ("error: failed to export ") ($ VSub_Name "$proj") (" project"))}
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 1012]
                        )
                      ]
                      spids: [-1 1029]
                    )
                  ]
                  spids: [973 1032]
                )
              spids: [968 971]
            )
            (C {(echo)} {(DQ ("# Creating symlinks"))})
            (C {(cd)} {($ VSub_Name "$BuildDir") (/llvm.src/tools)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(Lit_Other "[")} {(KW_Bang "!")} {(-h)} {(clang)} {(Lit_Other "]")})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(ln)} {(-s)} {(../../cfe.src)} {(clang)})]
                  spids: [-1 1062]
                )
              ]
              spids: [-1 1074]
            )
            (C {(cd)} {($ VSub_Name "$BuildDir") (/llvm.src/projects)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(KW_Bang "!")} {(-h)} {(llvm-test)} {(Lit_Other "]")})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(ln)} {(-s)} {(../../test-suite.src)} {(llvm-test)})]
                  spids: [-1 1096]
                )
              ]
              spids: [-1 1108]
            )
            (C {(cd)} {($ VSub_Name "$BuildDir")})
          ]
          spids: [956]
        )
      spids: [950 955]
    )
    (FuncDef
      name: configure_llvmCore
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:Phase)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [1127]
                )
              ]
              spids: [1127]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:Flavor)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$2"))}
                  spids: [1133]
                )
              ]
              spids: [1133]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ObjDir)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$3"))}
                  spids: [1139]
                )
              ]
              spids: [1139]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:InstallDir)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$4"))}
                  spids: [1145]
                )
              ]
              spids: [1145]
            )
            (Case
              to_match: {($ VSub_Name "$Flavor")}
              arms: [
                (case_arm
                  pat_list: [{(Release)} {(Release-64)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Optimized)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [1168]
                        )
                      ]
                      spids: [1168]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Assertions)
                          op: Equal
                          rhs: {(DQ (no))}
                          spids: [1174]
                        )
                      ]
                      spids: [1174]
                    )
                  ]
                  spids: [1159 1165 1180 -1]
                )
                (case_arm
                  pat_list: [{(Release) (Lit_Other "+") (Asserts)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Optimized)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [1190]
                        )
                      ]
                      spids: [1190]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Assertions)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [1196]
                        )
                      ]
                      spids: [1196]
                    )
                  ]
                  spids: [1183 1187 1202 -1]
                )
                (case_arm
                  pat_list: [{(Debug)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Optimized)
                          op: Equal
                          rhs: {(DQ (no))}
                          spids: [1210]
                        )
                      ]
                      spids: [1210]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:Assertions)
                          op: Equal
                          rhs: {(DQ (yes))}
                          spids: [1216]
                        )
                      ]
                      spids: [1216]
                    )
                  ]
                  spids: [1205 1207 1222 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (C {(echo)} {(DQ ("# Invalid flavor '") ($ VSub_Name "$Flavor") ("'"))})
                    (C {(echo)} {(DQ )})
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [1225 1227 1248 -1]
                )
              ]
              spids: [1152 1156 1251]
            )
            (C {(echo)} {(DQ ("# Using C compiler: ") ($ VSub_Name "$c_compiler"))})
            (C {(echo)} {(DQ ("# Using C++ compiler: ") ($ VSub_Name "$cxx_compiler"))})
            (C {(cd)} {($ VSub_Name "$ObjDir")})
            (C {(echo)} 
              {
                (DQ ("# Configuring llvm ") ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (" ") 
                  ($ VSub_Name "$Flavor")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("# ") ($ VSub_Name "$BuildDir") ("/llvm.src/configure --prefix=") 
                  ($ VSub_Name "$InstallDir") (" ") ("        --enable-optimized=") ($ VSub_Name "$Optimized") (" ") ("        --enable-assertions=") 
                  ($ VSub_Name "$Assertions")
                )
              }
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [
                    {(env)}
                    {(Lit_VarLike "CC=") ($ VSub_Name "$c_compiler")}
                    {(Lit_VarLike "CXX=") ($ VSub_Name "$cxx_compiler")}
                    {($ VSub_Name "$BuildDir") (/llvm.src/configure)}
                    {(--prefix) (Lit_Other "=") ($ VSub_Name "$InstallDir")}
                    {(--enable-optimized) (Lit_Other "=") ($ VSub_Name "$Optimized")}
                    {(--enable-assertions) (Lit_Other "=") ($ VSub_Name "$Assertions")}
                  ]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1338])]
                )
                (C {(tee)} 
                  {($ VSub_Name "$LogDir") (/llvm.configure-Phase) ($ VSub_Name "$Phase") (-) 
                    ($ VSub_Name "$Flavor") (.log)
                  }
                )
              ]
              negated: False
            )
            (C {(cd)} {($ VSub_Name "$BuildDir")})
          ]
          spids: [1124]
        )
      spids: [1118 1123]
    )
    (FuncDef
      name: build_llvmCore
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:Phase)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [1369]
                )
              ]
              spids: [1369]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:Flavor)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$2"))}
                  spids: [1375]
                )
              ]
              spids: [1375]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ObjDir)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$3"))}
                  spids: [1381]
                )
              ]
              spids: [1381]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:ExtraOpts) op:Equal rhs:{(DQ )} spids:[1387])]
              spids: [1387]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$Flavor"))} {(Lit_Other "=")} 
                          {(DQ (Release-64))} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ExtraOpts)
                          op: Equal
                          rhs: {(DQ ("EXTRA_OPTIONS=-m64"))}
                          spids: [1413]
                        )
                      ]
                      spids: [1413]
                    )
                  ]
                  spids: [-1 1410]
                )
              ]
              spids: [-1 1419]
            )
            (C {(cd)} {($ VSub_Name "$ObjDir")})
            (C {(echo)} 
              {
                (DQ ("# Compiling llvm ") ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (" ") 
                  ($ VSub_Name "$Flavor")
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ("# ") (${ VSub_Name MAKE) (" -j ") ($ VSub_Name "$NumJobs") (" VERBOSE=1 ") 
                  ($ VSub_Name "$ExtraOpts")
                )
              }
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [
                    {(${ VSub_Name MAKE)}
                    {(-j)}
                    {($ VSub_Name "$NumJobs")}
                    {(Lit_VarLike "VERBOSE=") (1)}
                    {($ VSub_Name "$ExtraOpts")}
                  ]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1469])]
                )
                (C {(tee)} 
                  {($ VSub_Name "$LogDir") (/llvm.make-Phase) ($ VSub_Name "$Phase") (-) 
                    ($ VSub_Name "$Flavor") (.log)
                  }
                )
              ]
              negated: False
            )
            (C {(echo)} 
              {
                (DQ ("# Installing llvm ") ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (" ") 
                  ($ VSub_Name "$Flavor")
                )
              }
            )
            (C {(echo)} {(DQ ("# ") (${ VSub_Name MAKE) (" install"))})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(${ VSub_Name MAKE)} {(install)}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1516])]
                )
                (C {(tee)} 
                  {($ VSub_Name "$LogDir") (/llvm.install-Phase) ($ VSub_Name "$Phase") (-) 
                    ($ VSub_Name "$Flavor") (.log)
                  }
                )
              ]
              negated: False
            )
            (C {(cd)} {($ VSub_Name "$BuildDir")})
          ]
          spids: [1366]
        )
      spids: [1360 1365]
    )
    (FuncDef
      name: test_llvmCore
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:Phase)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [1547]
                )
              ]
              spids: [1547]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:Flavor)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$2"))}
                  spids: [1553]
                )
              ]
              spids: [1553]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ObjDir)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$3"))}
                  spids: [1559]
                )
              ]
              spids: [1559]
            )
            (C {(cd)} {($ VSub_Name "$ObjDir")})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(${ VSub_Name MAKE)} {(-k)} {(check-all)}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1581])]
                )
                (C {(tee)} 
                  {($ VSub_Name "$LogDir") (/llvm.check-Phase) ($ VSub_Name "$Phase") (-) 
                    ($ VSub_Name "$Flavor") (.log)
                  }
                )
              ]
              negated: False
            )
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(${ VSub_Name MAKE)} {(-k)} {(unittests)}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1606])]
                )
                (C {(tee)} 
                  {($ VSub_Name "$LogDir") (/llvm.unittests-Phase) ($ VSub_Name "$Phase") (-) 
                    ($ VSub_Name "$Flavor") (.log)
                  }
                )
              ]
              negated: False
            )
            (C {(cd)} {($ VSub_Name "$BuildDir")})
          ]
          spids: [1544]
        )
      spids: [1538 1543]
    )
    (C {(set)} {(-e)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$do_checkout"))} {(Lit_Other "=")} {(DQ (yes))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(export_sources)})]
          spids: [-1 1653]
        )
      ]
      spids: [-1 1658]
    )
    (Pipeline
      children: [
        (Subshell
          child: 
            (CommandList
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:Flavors)
                      op: Equal
                      rhs: {(DQ (Release))}
                      spids: [1663]
                    )
                  ]
                  spids: [1663]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$do_debug"))} {(Lit_Other "=")} 
                              {(DQ (yes))} {(Lit_Other "]")}
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:Flavors)
                              op: Equal
                              rhs: {(DQ ("Debug ") ($ VSub_Name "$Flavors"))}
                              spids: [1688]
                            )
                          ]
                          spids: [1688]
                        )
                      ]
                      spids: [-1 1685]
                    )
                  ]
                  spids: [-1 1694]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$do_asserts"))} {(Lit_Other "=")} 
                              {(DQ (yes))} {(Lit_Other "]")}
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:Flavors)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name "$Flavors") (" Release+Asserts"))}
                              spids: [1716]
                            )
                          ]
                          spids: [1716]
                        )
                      ]
                      spids: [-1 1713]
                    )
                  ]
                  spids: [-1 1722]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$do_64bit"))} {(Lit_Other "=")} 
                              {(DQ (yes))} {(Lit_Other "]")}
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:Flavors)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name "$Flavors") (" Release-64"))}
                              spids: [1744]
                            )
                          ]
                          spids: [1744]
                        )
                      ]
                      spids: [-1 1741]
                    )
                  ]
                  spids: [-1 1750]
                )
                (ForEach
                  iter_name: Flavor
                  iter_words: [{($ VSub_Name "$Flavors")}]
                  do_arg_iter: False
                  body: 
                    (DoGroup
                      children: [
                        (C {(echo)} {(DQ )})
                        (C {(echo)} {(DQ )})
                        (C {(echo)} 
                          {
                            (DQ 
                              (
"********************************************************************************"
                              )
                            )
                          }
                        )
                        (C {(echo)} 
                          {
                            (DQ ("  Release:     ") ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC"))
                          }
                        )
                        (C {(echo)} {(DQ ("  Build:       ") ($ VSub_Name "$Flavor"))})
                        (C {(echo)} {(DQ ("  System Info: "))})
                        (C {(echo)} 
                          {
                            (DQ ("    ") 
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(uname)} {(-a)})])
                                left_token: <Left_Backtick "`">
                                spids: [1814 1818]
                              )
                            )
                          }
                        )
                        (C {(echo)} 
                          {
                            (DQ 
                              (
"********************************************************************************"
                              )
                            )
                          }
                        )
                        (C {(echo)} {(DQ )})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:llvmCore_phase1_objdir)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$BuildDir") (/Phase1/) ($ VSub_Name "$Flavor") 
                                  (/llvmCore-) ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (.obj)
                                }
                              spids: [1836]
                            )
                          ]
                          spids: [1836]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:llvmCore_phase1_installdir)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$BuildDir") (/Phase1/) ($ VSub_Name "$Flavor") 
                                  (/llvmCore-) ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (.install)
                                }
                              spids: [1847]
                            )
                          ]
                          spids: [1847]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:llvmCore_phase2_objdir)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$BuildDir") (/Phase2/) ($ VSub_Name "$Flavor") 
                                  (/llvmCore-) ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (.obj)
                                }
                              spids: [1859]
                            )
                          ]
                          spids: [1859]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:llvmCore_phase2_installdir)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$BuildDir") (/Phase2/) ($ VSub_Name "$Flavor") 
                                  (/llvmCore-) ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (.install)
                                }
                              spids: [1870]
                            )
                          ]
                          spids: [1870]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:llvmCore_phase3_objdir)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$BuildDir") (/Phase3/) ($ VSub_Name "$Flavor") 
                                  (/llvmCore-) ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (.obj)
                                }
                              spids: [1882]
                            )
                          ]
                          spids: [1882]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:llvmCore_phase3_installdir)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$BuildDir") (/Phase3/) ($ VSub_Name "$Flavor") 
                                  (/llvmCore-) ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (.install)
                                }
                              spids: [1893]
                            )
                          ]
                          spids: [1893]
                        )
                        (C {(rm)} {(-rf)} {($ VSub_Name "$llvmCore_phase1_objdir")})
                        (C {(rm)} {(-rf)} {($ VSub_Name "$llvmCore_phase1_installdir")})
                        (C {(rm)} {(-rf)} {($ VSub_Name "$llvmCore_phase2_objdir")})
                        (C {(rm)} {(-rf)} {($ VSub_Name "$llvmCore_phase2_installdir")})
                        (C {(rm)} {(-rf)} {($ VSub_Name "$llvmCore_phase3_objdir")})
                        (C {(rm)} {(-rf)} {($ VSub_Name "$llvmCore_phase3_installdir")})
                        (C {(mkdir)} {(-p)} {($ VSub_Name "$llvmCore_phase1_objdir")})
                        (C {(mkdir)} {(-p)} {($ VSub_Name "$llvmCore_phase1_installdir")})
                        (C {(mkdir)} {(-p)} {($ VSub_Name "$llvmCore_phase2_objdir")})
                        (C {(mkdir)} {(-p)} {($ VSub_Name "$llvmCore_phase2_installdir")})
                        (C {(mkdir)} {(-p)} {($ VSub_Name "$llvmCore_phase3_objdir")})
                        (C {(mkdir)} {(-p)} {($ VSub_Name "$llvmCore_phase3_installdir")})
                        (C {(echo)} {(DQ ("# Phase 1: Building llvmCore"))})
                        (C {(configure_llvmCore)} {(1)} {($ VSub_Name "$Flavor")} 
                          {($ VSub_Name "$llvmCore_phase1_objdir")} {($ VSub_Name "$llvmCore_phase1_installdir")}
                        )
                        (C {(build_llvmCore)} {(1)} {($ VSub_Name "$Flavor")} 
                          {($ VSub_Name "$llvmCore_phase1_objdir")}
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:c_compiler)
                              op: Equal
                              rhs: {($ VSub_Name "$llvmCore_phase1_installdir") (/bin/clang)}
                              spids: [2039]
                            )
                          ]
                          spids: [2039]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cxx_compiler)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$llvmCore_phase1_installdir") (/bin/clang) 
                                  (Lit_Other "+") (Lit_Other "+")
                                }
                              spids: [2044]
                            )
                          ]
                          spids: [2044]
                        )
                        (C {(echo)} {(DQ ("# Phase 2: Building llvmCore"))})
                        (C {(configure_llvmCore)} {(2)} {($ VSub_Name "$Flavor")} 
                          {($ VSub_Name "$llvmCore_phase2_objdir")} {($ VSub_Name "$llvmCore_phase2_installdir")}
                        )
                        (C {(build_llvmCore)} {(2)} {($ VSub_Name "$Flavor")} 
                          {($ VSub_Name "$llvmCore_phase2_objdir")}
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:c_compiler)
                              op: Equal
                              rhs: {($ VSub_Name "$llvmCore_phase2_installdir") (/bin/clang)}
                              spids: [2091]
                            )
                          ]
                          spids: [2091]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:cxx_compiler)
                              op: Equal
                              rhs: 
                                {($ VSub_Name "$llvmCore_phase2_installdir") (/bin/clang) 
                                  (Lit_Other "+") (Lit_Other "+")
                                }
                              spids: [2096]
                            )
                          ]
                          spids: [2096]
                        )
                        (C {(echo)} {(DQ ("# Phase 3: Building llvmCore"))})
                        (C {(configure_llvmCore)} {(3)} {($ VSub_Name "$Flavor")} 
                          {($ VSub_Name "$llvmCore_phase3_objdir")} {($ VSub_Name "$llvmCore_phase3_installdir")}
                        )
                        (C {(build_llvmCore)} {(3)} {($ VSub_Name "$Flavor")} 
                          {($ VSub_Name "$llvmCore_phase3_objdir")}
                        )
                        (C {(echo)} {(DQ ("# Testing - built with clang"))})
                        (C {(test_llvmCore)} {(3)} {($ VSub_Name "$Flavor")} 
                          {($ VSub_Name "$llvmCore_phase3_objdir")}
                        )
                        (C {(echo)})
                        (C {(echo)} {(DQ ("# Comparing Phase 2 and Phase 3 files"))})
                        (ForEach
                          iter_name: o
                          iter_words: [
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(find)} {($ VSub_Name "$llvmCore_phase2_objdir")} {(-name)} 
                                        {(SQ <"*.o">)}
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick "`">
                                spids: [2184 2194]
                              )
                            }
                          ]
                          do_arg_iter: False
                          body: 
                            (DoGroup
                              children: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:p3)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (Pipeline
                                                    children: [
                                                      (C {(echo)} {($ VSub_Name "$o")})
                                                      (C {(sed)} {(-e)} {(SQ <"s,Phase2,Phase3,">)})
                                                    ]
                                                    negated: False
                                                  )
                                                ]
                                              )
                                            left_token: <Left_Backtick "`">
                                            spids: [2202 2216]
                                          )
                                        }
                                      spids: [2201]
                                    )
                                  ]
                                  spids: [2201]
                                )
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (Pipeline
                                              children: [
                                                (SimpleCommand
                                                  words: [
                                                    {(cmp)}
                                                    {(--ignore-initial) (Lit_Other "=") (16)}
                                                    {($ VSub_Name "$o")}
                                                    {($ VSub_Name "$p3")}
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: -1
                                                      arg_word: {(/dev/null)}
                                                      spids: [2233]
                                                    )
                                                    (Redir
                                                      op_id: Redir_GreatAnd
                                                      fd: 2
                                                      arg_word: {(1)}
                                                      spids: [2237]
                                                    )
                                                  ]
                                                )
                                              ]
                                              negated: True
                                            )
                                          terminator: <Op_Semi ";">
                                        )
                                      ]
                                      action: [
                                        (C {(echo)} 
                                          {
                                            (DQ ("file ") 
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [(C {(basename)} {($ VSub_Name "$o")})]
                                                  )
                                                left_token: <Left_Backtick "`">
                                                spids: [2249 2253]
                                              ) (" differs between phase 2 and phase 3")
                                            )
                                          }
                                        )
                                      ]
                                      spids: [-1 2242]
                                    )
                                  ]
                                  spids: [-1 2258]
                                )
                              ]
                              spids: [2198 2261]
                            )
                          spids: [2183 2196]
                        )
                      ]
                      spids: [1763 2263]
                    )
                  spids: [1758 1761]
                )
              ]
            )
          redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2267])]
          spids: [1661 2265]
        )
        (C {(tee)} 
          {($ VSub_Name "$LogDir") (/testing.) ($ VSub_Name "$Release") (-rc) ($ VSub_Name "$RC") (.log)}
        )
      ]
      negated: False
    )
    (C {(set)} {(Lit_Other "+") (e)})
    (C {(echo)} {(DQ ("### Testing Finished ###"))})
    (C {(echo)} {(DQ ("### Logs: ") ($ VSub_Name "$LogDir"))})
    (C {(exit)} {(0)})
  ]
)