(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CLANG_REVISION) op:Equal rhs:{(241602)} spids:[26])]
      spids: [26]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CLANG_SUB_REVISION) op:Equal rhs:{(3)} spids:[33])]
      spids: [33]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PACKAGE_VERSION)
          op: Equal
          rhs: {(DQ (${ VSub_Name CLANG_REVISION) (-) (${ VSub_Name CLANG_SUB_REVISION))}
          spids: [37]
        )
      ]
      spids: [37]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:THIS_DIR)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(dirname)} {(DQ (${ VSub_Number 0))})])
                  left_token: <Left_CommandSub "$(">
                  spids: [51 59]
                )
              )
            }
          spids: [49]
        )
      ]
      spids: [49]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LLVM_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name THIS_DIR) (/../../../third_party/llvm))}
          spids: [62]
        )
      ]
      spids: [62]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LLVM_BUILD_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) ("/../llvm-build/Release+Asserts"))}
          spids: [70]
        )
      ]
      spids: [70]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:COMPILER_RT_BUILD_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/../llvm-build/compiler-rt))}
          spids: [78]
        )
      ]
      spids: [78]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LLVM_BOOTSTRAP_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/../llvm-bootstrap))}
          spids: [86]
        )
      ]
      spids: [86]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LLVM_BOOTSTRAP_INSTALL_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/../llvm-bootstrap-install))}
          spids: [94]
        )
      ]
      spids: [94]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLANG_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/tools/clang))}
          spids: [102]
        )
      ]
      spids: [102]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:COMPILER_RT_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/compiler-rt))}
          spids: [110]
        )
      ]
      spids: [110]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LIBCXX_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/projects/libcxx))}
          spids: [118]
        )
      ]
      spids: [118]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LIBCXXABI_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/projects/libcxxabi))}
          spids: [126]
        )
      ]
      spids: [126]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ANDROID_NDK_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name THIS_DIR) (/../../../third_party/android_tools/ndk))}
          spids: [134]
        )
      ]
      spids: [134]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:STAMP_FILE)
          op: Equal
          rhs: {(DQ (${ VSub_Name LLVM_DIR) (/../llvm-build/cr_build_revision))}
          spids: [142]
        )
      ]
      spids: [142]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CHROMIUM_TOOLS_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name THIS_DIR) (/..))}
          spids: [150]
        )
      ]
      spids: [150]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BINUTILS_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name THIS_DIR) (/../../../third_party/binutils))}
          spids: [158]
        )
      ]
      spids: [158]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_CHROMIUM_TOOLS_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name CHROMIUM_TOOLS_DIR))}
          spids: [167]
        )
      ]
      spids: [167]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_LIBCXX_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name LIBCXX_DIR))}
          spids: [178]
        )
      ]
      spids: [178]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_LIBCXXABI_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name LIBCXXABI_DIR))}
          spids: [189]
        )
      ]
      spids: [189]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_LLVM_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name LLVM_DIR))}
          spids: [200]
        )
      ]
      spids: [200]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_LLVM_BUILD_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name LLVM_BUILD_DIR))}
          spids: [211]
        )
      ]
      spids: [211]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_COMPILER_RT_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name COMPILER_RT_DIR))}
          spids: [222]
        )
      ]
      spids: [222]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_BINUTILS_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name BINUTILS_DIR))}
          spids: [233]
        )
      ]
      spids: [233]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LLVM_REPO_URL)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name LLVM_URL>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: 
                      {("https:") (Lit_Slash /) (Lit_Slash /) (llvm.org) (Lit_Slash /) (svn) 
                        (Lit_Slash /) (llvm-project)
                      }
                  )
                spids: [249 260]
              )
            }
          spids: [248]
        )
      ]
      spids: [248]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CDS_URL)
          op: Equal
          rhs: {(https) (Lit_Other ":") (//commondatastorage.googleapis.com/chromium-browser-clang)}
          spids: [263]
        )
      ]
      spids: [263]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name "$GYP_DEFINES"))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:GYP_DEFINES) op:Equal rhs:{(SQ )} spids:[285])]
              spids: [285]
            )
          ]
          spids: [-1 282]
        )
      ]
      spids: [-1 287]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name "$GYP_GENERATORS"))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GYP_GENERATORS)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [305]
                )
              ]
              spids: [305]
            )
          ]
          spids: [-1 302]
        )
      ]
      spids: [-1 307]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_z
                      child: {(DQ ($ VSub_Name "$LLVM_DOWNLOAD_GOLD_PLUGIN"))}
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LLVM_DOWNLOAD_GOLD_PLUGIN)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [325]
                )
              ]
              spids: [325]
            )
          ]
          spids: [-1 322]
        )
      ]
      spids: [-1 327]
    )
    (C {(set)} {(-eu)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (BracedVarSub
                            token: <VSub_Name LLVM_FORCE_HEAD_REVISION>
                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                            spids: [346 351]
                          )
                        }
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CLANG_REVISION)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(svn)} {(info)} {(DQ ($ VSub_Name "$LLVM_REPO_URL"))})
                                  (C {(grep)} {(SQ <"Revision:">)})
                                  (C {(awk)} {(SQ <"{ printf $2; }">)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [368 394]
                      )
                    }
                  spids: [367]
                )
              ]
              spids: [367]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PACKAGE_VERSION)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name CLANG_REVISION) (-0))}
                  spids: [397]
                )
              ]
              spids: [397]
            )
          ]
          spids: [-1 356]
        )
      ]
      spids: [-1 405]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OS)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(uname)} {(-s)})])
                  left_token: <Left_CommandSub "$(">
                  spids: [410 414]
                )
              )
            }
          spids: [408]
        )
      ]
      spids: [408]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:if_needed) op:Equal rhs:{(SQ )} spids:[421])]
      spids: [421]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:force_local_build) op:Equal rhs:{(SQ )} spids:[423])]
      spids: [423]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:run_tests) op:Equal rhs:{(SQ )} spids:[425])]
      spids: [425]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:bootstrap) op:Equal rhs:{(SQ )} spids:[427])]
      spids: [427]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:with_android) op:Equal rhs:{(yes)} spids:[429])]
      spids: [429]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:chrome_tools)
          op: Equal
          rhs: {(DQ ("plugins;blink_gc_plugin"))}
          spids: [432]
        )
      ]
      spids: [432]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:gcc_toolchain) op:Equal rhs:{(SQ )} spids:[437])]
      spids: [437]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:with_patches) op:Equal rhs:{(yes)} spids:[439])]
      spids: [439]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobEqual
                      left: {(DQ (${ VSub_Name OS))}
                      right: {(DQ (Darwin))}
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:with_android) op:Equal rhs:{(SQ )} spids:[465])]
              spids: [465]
            )
          ]
          spids: [-1 462]
        )
      ]
      spids: [-1 467]
    )
    (While
      cond: [
        (Sentence
          child: (DBracket expr:(BoolBinary op_id:Redir_Great left:{($ VSub_Pound "$#")} right:{(0)}))
          terminator: <Op_Semi ";">
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Number "$1")}
              arms: [
                (case_arm
                  pat_list: [{(--bootstrap)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:bootstrap)
                          op: Equal
                          rhs: {(yes)}
                          spids: [497]
                        )
                      ]
                      spids: [497]
                    )
                  ]
                  spids: [493 494 501 -1]
                )
                (case_arm
                  pat_list: [{(--if-needed)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:if_needed)
                          op: Equal
                          rhs: {(yes)}
                          spids: [508]
                        )
                      ]
                      spids: [508]
                    )
                  ]
                  spids: [504 505 512 -1]
                )
                (case_arm
                  pat_list: [{(--force-local-build)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:force_local_build)
                          op: Equal
                          rhs: {(yes)}
                          spids: [519]
                        )
                      ]
                      spids: [519]
                    )
                  ]
                  spids: [515 516 523 -1]
                )
                (case_arm
                  pat_list: [{(--print-revision)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Name LLVM_FORCE_HEAD_REVISION>
                                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                                            spids: [536 541]
                                          )
                                        }
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (Pipeline
                              children: [
                                (C {(svn)} {(info)} {(DQ ($ VSub_Name "$LLVM_DIR"))})
                                (C {(grep)} {(SQ <"Revision:">)})
                                (C {(awk)} {(SQ <"{ printf $2; }">)})
                              ]
                              negated: False
                            )
                          ]
                          spids: [-1 546]
                        )
                      ]
                      else_action: [(C {(echo)} {($ VSub_Name "$PACKAGE_VERSION")})]
                      spids: [574 582]
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [526 527 590 -1]
                )
                (case_arm
                  pat_list: [{(--run-tests)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:run_tests)
                          op: Equal
                          rhs: {(yes)}
                          spids: [597]
                        )
                      ]
                      spids: [597]
                    )
                  ]
                  spids: [593 594 601 -1]
                )
                (case_arm
                  pat_list: [{(--without-android)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:with_android)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [608]
                        )
                      ]
                      spids: [608]
                    )
                  ]
                  spids: [604 605 611 -1]
                )
                (case_arm
                  pat_list: [{(--without-patches)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:with_patches)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [618]
                        )
                      ]
                      spids: [618]
                    )
                  ]
                  spids: [614 615 621 -1]
                )
                (case_arm
                  pat_list: [{(--with-chrome-tools)}]
                  action: [
                    (C {(shift)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {($ VSub_Pound "$#")}
                                      right: {(0)}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ("--with-chrome-tools requires an argument."))})
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 644]
                        )
                      ]
                      spids: [-1 659]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:chrome_tools)
                          op: Equal
                          rhs: {($ VSub_Number "$1")}
                          spids: [662]
                        )
                      ]
                      spids: [662]
                    )
                  ]
                  spids: [624 625 666 -1]
                )
                (case_arm
                  pat_list: [{(--gcc-toolchain)}]
                  action: [
                    (C {(shift)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: BoolBinary_GlobDEqual
                                      left: {($ VSub_Pound "$#")}
                                      right: {(0)}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ ("--gcc-toolchain requires an argument."))})
                            (C {(exit)} {(1)})
                          ]
                          spids: [-1 689]
                        )
                      ]
                      spids: [-1 704]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_x
                                      child: {(DQ ($ VSub_Number "$1") (/bin/gcc))}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:gcc_toolchain)
                                  op: Equal
                                  rhs: {($ VSub_Number "$1")}
                                  spids: [724]
                                )
                              ]
                              spids: [724]
                            )
                          ]
                          spids: [-1 721]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(DQ ("Invalid --gcc-toolchain: '") ($ VSub_Number "$1") ("'."))})
                        (C {(echo)} 
                          {
                            (DQ ("'") ($ VSub_Number "$1") ("/bin/gcc' does not appear to be valid."))
                          }
                        )
                        (C {(exit)} {(1)})
                      ]
                      spids: [728 754]
                    )
                  ]
                  spids: [669 670 757 -1]
                )
                (case_arm
                  pat_list: [{(--help)}]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ("usage: ") ($ VSub_Number "$0") 
                          (" [--force-local-build] [--if-needed] [--run-tests] ")
                        )
                      }
                    )
                    (C {(echo)} {(DQ ("--bootstrap: First build clang with CC, then with itself."))})
                    (C {(echo)} {(DQ ("--force-local-build: Don't try to download prebuilt binaries."))})
                    (C {(echo)} 
                      {(DQ ("--if-needed: Download clang only if the script thinks it is needed."))}
                    )
                    (C {(echo)} {(DQ ("--run-tests: Run tests after building. Only for local builds."))})
                    (C {(echo)} {(DQ ("--print-revision: Print current clang revision and exit."))})
                    (C {(echo)} {(DQ ("--without-android: Don't build ASan Android runtime library."))})
                    (C {(echo)} {(DQ ("--with-chrome-tools: Select which chrome tools to build."))} 
                      {(DQ ("Defaults to plugins;blink_gc_plugin."))}
                    )
                    (C {(echo)} {(DQ ("    Example: --with-chrome-tools plugins;empty-string"))})
                    (C {(echo)} {(DQ ("--gcc-toolchain: Set the prefix for which GCC version should"))})
                    (C {(echo)} {(DQ ("    be used for building. For example, to use gcc in"))})
                    (C {(echo)} {(DQ ("    /opt/foo/bin/gcc, use '--gcc-toolchain '/opt/foo"))})
                    (C {(echo)} {(DQ ("--without-patches: Don't apply local patches."))})
                    (C {(echo)})
                    (C {(exit)} {(1)})
                  ]
                  spids: [761 762 872 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (C {(echo)} {(DQ ("Unknown argument: '") ($ VSub_Number "$1") ("'."))})
                    (C {(echo)} {(DQ ("Use --help for help."))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [875 876 900 -1]
                )
              ]
              spids: [486 490 903]
            )
            (C {(shift)})
          ]
          spids: [483 908]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (BracedVarSub
                            token: <VSub_Name LLVM_FORCE_HEAD_REVISION>
                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                            spids: [917 922]
                          )
                        }
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:force_local_build)
                  op: Equal
                  rhs: {(yes)}
                  spids: [930]
                )
              ]
              spids: [930]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:with_patches) op:Equal rhs:{(SQ )} spids:[939])]
              spids: [939]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_EqualTilde
                                  left: {(DQ ($ VSub_Name "$GYP_DEFINES"))}
                                  right: 
                                    {(.) (Lit_Other "*") (Lit_VarLike "OS=") (android.) (Lit_Other "*")}
                                )
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:with_android)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [971]
                        )
                      ]
                      spids: [971]
                    )
                  ]
                  spids: [-1 964]
                )
              ]
              spids: [-1 974]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LLVM_BUILD_TOOLS_DIR)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ABS_LLVM_DIR) (/../llvm-build-tools))}
                  spids: [978]
                )
              ]
              spids: [978]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ (${ VSub_Name OS))}
                                  right: {(DQ (Linux))}
                                )
                            )
                            (DBracket
                              expr: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ (${ VSub_Name gcc_toolchain))}
                                )
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: Redir_Less
                                      left: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [(C {(gcc)} {(-dumpversion)})]
                                              )
                                            left_token: <Left_CommandSub "$(">
                                            spids: [1028 1032]
                                          )
                                        }
                                      right: {(DQ (4.7.0))}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (LogicalNot
                                              child: 
                                                (BoolUnary
                                                  op_id: BoolUnary_e
                                                  child: 
                                                    {
                                                      (DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR) 
                                                        (/gcc482)
                                                      )
                                                    }
                                                )
                                            )
                                        )
                                      terminator: <Op_Semi ";">
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(DQ ("Downloading pre-built GCC 4.8.2..."))})
                                    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR))})
                                    (Pipeline
                                      children: [
                                        (C {(curl)} {(--fail)} {(-L)} 
                                          {(DQ (${ VSub_Name CDS_URL) (/tools/gcc482.tgz))}
                                        )
                                        (C {(tar)} {(zxf)} {(-)} {(-C)} 
                                          {(DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR))}
                                        )
                                      ]
                                      negated: False
                                    )
                                    (C {(echo)} {(Done)})
                                  ]
                                  spids: [-1 1068]
                                )
                              ]
                              spids: [-1 1126]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:gcc_toolchain)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR) (/gcc482))}
                                  spids: [1129]
                                )
                              ]
                              spids: [1129]
                            )
                          ]
                          spids: [-1 1043]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:gcc_toolchain)
                              op: Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSubPart
                                      command_list: 
                                        (CommandList
                                          children: [
                                            (C {(dirname)} 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(dirname)} 
                                                          {
                                                            (CommandSubPart
                                                              command_list: 
                                                                (CommandList
                                                                  children: [(C {(which)} {(gcc)})]
                                                                )
                                                              left_token: <Left_CommandSub "$(">
                                                              spids: [1153 1157]
                                                            )
                                                          }
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub "$(">
                                                  spids: [1150 1158]
                                                )
                                              }
                                            )
                                          ]
                                        )
                                      left_token: <Left_CommandSub "$(">
                                      spids: [1147 1159]
                                    )
                                  )
                                }
                              spids: [1145]
                            )
                          ]
                          spids: [1145]
                        )
                      ]
                      spids: [1138 1163]
                    )
                  ]
                  spids: [-1 1021]
                )
              ]
              spids: [-1 1166]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (LogicalOr
                              left: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ (${ VSub_Name OS))}
                                  right: {(DQ (Linux))}
                                )
                              right: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobDEqual
                                  left: {(DQ (${ VSub_Name OS))}
                                  right: {(DQ (Darwin))}
                                )
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolBinary
                                      op_id: Redir_Less
                                      left: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (Pipeline
                                                    children: [
                                                      (C {(cmake)} {(--version)})
                                                      (C {(grep)} {(-Eo)} {(SQ <"[0-9.]+">)})
                                                    ]
                                                    negated: False
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub "$(">
                                            spids: [1210 1224]
                                          )
                                        }
                                      right: {(DQ (3.0))}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (DBracket
                                          expr: 
                                            (LogicalNot
                                              child: 
                                                (BoolUnary
                                                  op_id: BoolUnary_e
                                                  child: 
                                                    {
                                                      (DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR) 
                                                        (/cmake310)
                                                      )
                                                    }
                                                )
                                            )
                                        )
                                      terminator: <Op_Semi ";">
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(DQ ("Downloading pre-built CMake 3.10..."))})
                                    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR))})
                                    (Pipeline
                                      children: [
                                        (C {(curl)} {(--fail)} {(-L)} 
                                          {
                                            (DQ (${ VSub_Name CDS_URL) (/tools/cmake310_) 
                                              (${ VSub_Name OS) (.tgz)
                                            )
                                          }
                                        )
                                        (C {(tar)} {(zxf)} {(-)} {(-C)} 
                                          {(DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR))}
                                        )
                                      ]
                                      negated: False
                                    )
                                    (C {(echo)} {(Done)})
                                  ]
                                  spids: [-1 1260]
                                )
                              ]
                              spids: [-1 1322]
                            )
                            (C {(export)} 
                              {(Lit_VarLike "PATH=") 
                                (DQ (${ VSub_Name LLVM_BUILD_TOOLS_DIR) ("/cmake310/bin:") 
                                  (${ VSub_Name PATH)
                                )
                              }
                            )
                          ]
                          spids: [-1 1235]
                        )
                      ]
                      spids: [-1 1339]
                    )
                  ]
                  spids: [-1 1203]
                )
              ]
              spids: [-1 1342]
            )
            (C {(echo)} 
              {(DQ ("LLVM_FORCE_HEAD_REVISION was set; using r") (${ VSub_Name CLANG_REVISION))}
            )
          ]
          spids: [-1 927]
        )
      ]
      spids: [-1 1355]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name "$if_needed"))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name OS))}
                              right: {(DQ (Darwin))}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(true)})]
                  spids: [-1 1393]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {(DQ (${ VSub_Name OS))}
                              right: {(DQ (Linux))}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(true)})]
                  spids: [1403 1422]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_EqualTilde
                              left: {(DQ ($ VSub_Name "$GYP_DEFINES"))}
                              right: 
                                {(.) (Lit_Other "*") ("(") (clang) ("|") (tsan) ("|") (asan) ("|") (lsan) 
                                  ("|") (msan) (")") (Lit_Other "=") (1.) (Lit_Other "*")
                                }
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(true)})]
                  spids: [1432 1462]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_d child:{(DQ (${ VSub_Name LLVM_BUILD_DIR))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(true)})]
                  spids: [1472 1487]
                )
              ]
              else_action: [(C {(exit)} {(0)})]
              spids: [1501 1513]
            )
          ]
          spids: [-1 1371]
        )
      ]
      spids: [-1 1515]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_f child:{(DQ (${ VSub_Name STAMP_FILE))}))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PREVIOUSLY_BUILT_REVISON)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(cat)} {(DQ (${ VSub_Name STAMP_FILE))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1541 1549]
                      )
                    }
                  spids: [1540]
                )
              ]
              spids: [1540]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (DBracket
                              expr: 
                                (BoolUnary
                                  op_id: BoolUnary_z
                                  child: {(DQ ($ VSub_Name "$force_local_build"))}
                                )
                            )
                            (DBracket
                              expr: 
                                (BoolBinary
                                  op_id: BoolBinary_GlobEqual
                                  left: {(DQ (${ VSub_Name PREVIOUSLY_BUILT_REVISON))}
                                  right: {(DQ (${ VSub_Name PACKAGE_VERSION))}
                                )
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ("Clang already at ") (${ VSub_Name PACKAGE_VERSION))})
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 1589]
                )
              ]
              spids: [-1 1607]
            )
          ]
          spids: [-1 1537]
        )
      ]
      spids: [-1 1609]
    )
    (C {(rm)} {(-f)} {(DQ (${ VSub_Name STAMP_FILE))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_z child:{(DQ ($ VSub_Name "$force_local_build"))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CDS_FILE)
                  op: Equal
                  rhs: {(DQ (clang-) (${ VSub_Name PACKAGE_VERSION) (.tgz))}
                  spids: [1650]
                )
              ]
              spids: [1650]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CDS_OUT_DIR)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(mktemp)} {(-d)} {(-t)} {(clang_download.XXXXXX)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1661 1669]
                      )
                    }
                  spids: [1660]
                )
              ]
              spids: [1660]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CDS_OUTPUT)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name CDS_OUT_DIR) (/) (${ VSub_Name CDS_FILE))}
                  spids: [1672]
                )
              ]
              spids: [1672]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Linux))} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CDS_FULL_URL)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name CDS_URL) (/Linux_x64/) (${ VSub_Name CDS_FILE))}
                          spids: [1706]
                        )
                      ]
                      spids: [1706]
                    )
                  ]
                  spids: [-1 1703]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Darwin))} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CDS_FULL_URL)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name CDS_URL) (/Mac/) (${ VSub_Name CDS_FILE))}
                          spids: [1740]
                        )
                      ]
                      spids: [1740]
                    )
                  ]
                  spids: [1718 1737]
                )
              ]
              spids: [-1 1752]
            )
            (C {(echo)} {(Trying)} {(to)} {(download)} {(prebuilt)} {(clang)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(which)} {(curl)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [1774]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(curl)} {(-L)} {(--fail)} {(DQ (${ VSub_Name CDS_FULL_URL))} {(-o)} 
                          {(DQ (${ VSub_Name CDS_OUTPUT))}
                        )
                        (C {(rm)} {(-rf)} {(DQ (${ VSub_Name CDS_OUT_DIR))})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 1779]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(which)} {(wget)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [1823]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (C {(wget)} {(DQ (${ VSub_Name CDS_FULL_URL))} {(-O)} 
                          {(DQ (${ VSub_Name CDS_OUTPUT))}
                        )
                        (C {(rm)} {(-rf)} {(DQ (${ VSub_Name CDS_OUT_DIR))})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [1817 1828]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ("Neither curl nor wget found. Please install one of these."))})
                (C {(exit)} {(1)})
              ]
              spids: [1860 1875]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(-f)} {(DQ (${ VSub_Name CDS_OUTPUT))} {(Lit_Other "]")})
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(rm)} {(-rf)} {(DQ (${ VSub_Name LLVM_BUILD_DIR))})
                    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name LLVM_BUILD_DIR))})
                    (C {(tar)} {(-xzf)} {(DQ (${ VSub_Name CDS_OUTPUT))} {(-C)} 
                      {(DQ (${ VSub_Name LLVM_BUILD_DIR))}
                    )
                    (C {(echo)} {(clang)} {(DQ (${ VSub_Name PACKAGE_VERSION))} {(unpacked)})
                    (SimpleCommand
                      words: [{(echo)} {(DQ (${ VSub_Name PACKAGE_VERSION))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(DQ (${ VSub_Name STAMP_FILE))}
                          spids: [1958]
                        )
                      ]
                    )
                    (C {(rm)} {(-rf)} {(DQ (${ VSub_Name CDS_OUT_DIR))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DBracket
                                  expr: 
                                    (BoolUnary
                                      op_id: BoolUnary_n
                                      child: {(DQ (${ VSub_Name LLVM_DOWNLOAD_GOLD_PLUGIN))}
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(${ VSub_Name THIS_DIR) (/../../../build/download_gold_plugin.py)})
                          ]
                          spids: [-1 2001]
                        )
                      ]
                      spids: [-1 2010]
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 1893]
                )
              ]
              else_action: [
                (C {(echo)} {(Did)} {(not)} {(find)} {(prebuilt)} {(clang)} 
                  {(DQ (${ VSub_Name PACKAGE_VERSION)) (Lit_Comma ",")} {(building)}
                )
              ]
              spids: [2018 2043]
            )
          ]
          spids: [-1 1639]
        )
      ]
      spids: [-1 2045]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (AndOr
                  children: [
                    (DBracket
                      expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name with_android))})
                    )
                    (Pipeline
                      children: [
                        (DBracket
                          expr: 
                            (BoolUnary
                              op_id: BoolUnary_d
                              child: {(DQ (${ VSub_Name ANDROID_NDK_DIR))}
                            )
                        )
                      ]
                      negated: True
                    )
                  ]
                  op_id: Op_DAmp
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("Android NDK not found at ") (${ VSub_Name ANDROID_NDK_DIR))})
            (C {(echo)} {(DQ ("The Android NDK is needed to build a Clang whose -fsanitize=address"))})
            (C {(echo)} {(DQ ("works on Android. See "))})
            (C {(echo)} 
              {(DQ ("http://code.google.com/p/chromium/wiki/AndroidBuildInstructions for how"))}
            )
            (C {(echo)} {(DQ ("to install the NDK, or pass --without-android."))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 2079]
        )
      ]
      spids: [-1 2124]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(which)} {(cmake)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2138])]
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("CMake needed to build clang; please install"))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 2143]
        )
      ]
      spids: [-1 2157]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(which)} {(ninja)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2167])]
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("ninja needed to build clang, please install"))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 2172]
        )
      ]
      spids: [-1 2186]
    )
    (C {(echo)} {(Reverting)} {(previously)} {(patched)} {(files)})
    (ForEach
      iter_name: i
      iter_words: [
        {(DQ (${ VSub_Name CLANG_DIR) (/test/Index/crash-recovery-modules.m))}
        {(DQ (${ VSub_Name CLANG_DIR) (/unittests/libclang/LibclangTest.cpp))}
        {(DQ (${ VSub_Name COMPILER_RT_DIR) (/lib/asan/asan_rtl.cc))}
        {(DQ (${ VSub_Name COMPILER_RT_DIR) (/test/asan/TestCases/Linux/new_array_cookie_test.cc))}
        {(DQ (${ VSub_Name LLVM_DIR) (/test/DebugInfo/gmlt.ll))}
        {(DQ (${ VSub_Name LLVM_DIR) (/lib/CodeGen/SpillPlacement.cpp))}
        {(DQ (${ VSub_Name LLVM_DIR) (/lib/CodeGen/SpillPlacement.h))}
        {(DQ (${ VSub_Name LLVM_DIR) (/lib/Transforms/Instrumentation/MemorySanitizer.cpp))}
        {(DQ (${ VSub_Name CLANG_DIR) (/test/Driver/env.c))}
        {(DQ (${ VSub_Name CLANG_DIR) (/lib/Frontend/InitPreprocessor.cpp))}
        {(DQ (${ VSub_Name CLANG_DIR) (/test/Frontend/exceptions.c))}
        {(DQ (${ VSub_Name CLANG_DIR) (/test/Preprocessor/predefined-exceptions.m))}
        {(DQ (${ VSub_Name LLVM_DIR) (/test/Bindings/Go/go.test))}
        {(DQ (${ VSub_Name CLANG_DIR) (/lib/Parse/ParseExpr.cpp))}
        {(DQ (${ VSub_Name CLANG_DIR) (/lib/Parse/ParseTemplate.cpp))}
        {(DQ (${ VSub_Name CLANG_DIR) (/lib/Sema/SemaDeclCXX.cpp))}
        {(DQ (${ VSub_Name CLANG_DIR) (/lib/Sema/SemaExprCXX.cpp))}
        {(DQ (${ VSub_Name CLANG_DIR) (/test/SemaCXX/default2.cpp))}
        {(DQ (${ VSub_Name CLANG_DIR) (/test/SemaCXX/typo-correction-delayed.cpp))}
        {
          (DQ (${ VSub_Name COMPILER_RT_DIR) 
            (/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc)
          )
        }
        {(DQ (${ VSub_Name COMPILER_RT_DIR) (/test/tsan/signal_segv_handler.cc))}
        {(DQ (${ VSub_Name COMPILER_RT_DIR) (/lib/sanitizer_common/sanitizer_coverage_libcdep.cc))}
        {(DQ (${ VSub_Name COMPILER_RT_DIR) (/cmake/config-ix.cmake))}
        {(DQ (${ VSub_Name COMPILER_RT_DIR) (/CMakeLists.txt))}
        {(DQ (${ VSub_Name COMPILER_RT_DIR) (/lib/ubsan/ubsan_platform.h))}
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Sentence
              child: 
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DBracket
                              expr: (BoolUnary op_id:BoolUnary_e child:{(DQ (${ VSub_Name i))})
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (C {(rm)} {(-f)} {(DQ (${ VSub_Name i))})
                        (C {(svn)} {(revert)} {(DQ (${ VSub_Name i))})
                      ]
                      spids: [-1 2452]
                    )
                  ]
                  spids: [-1 2480]
                )
              terminator: <Op_Semi ";">
            )
          ]
          spids: [2434 2483]
        )
      spids: [2204 2432]
    )
    (C {(echo)} {(Remove)} {(the)} {(Clang)} {(tools)} {(shim)} {(dir)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CHROME_TOOLS_SHIM_DIR)
          op: Equal
          rhs: {(${ VSub_Name ABS_LLVM_DIR) (/tools/chrometools)}
          spids: [2500]
        )
      ]
      spids: [2500]
    )
    (C {(rm)} {(-rfv)} {(${ VSub_Name CHROME_TOOLS_SHIM_DIR)})
    (C {(echo)} {(Getting)} {(LLVM)} {(r) (DQ (${ VSub_Name CLANG_REVISION))} {(KW_In in)} 
      {(DQ (${ VSub_Name LLVM_DIR))}
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {(svn)} {(co)} {(--force)} 
                      {
                        (DQ (${ VSub_Name LLVM_REPO_URL) ("/llvm/trunk@") (${ VSub_Name CLANG_REVISION))
                      } {(DQ (${ VSub_Name LLVM_DIR))}
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(Checkout)} {(failed) (Lit_Comma ",")} {(retrying)})
            (C {(rm)} {(-rf)} {(DQ (${ VSub_Name LLVM_DIR))})
            (C {(svn)} {(co)} {(--force)} 
              {(DQ (${ VSub_Name LLVM_REPO_URL) ("/llvm/trunk@") (${ VSub_Name CLANG_REVISION))} {(DQ (${ VSub_Name LLVM_DIR))}
            )
          ]
          spids: [-1 2565]
        )
      ]
      spids: [-1 2611]
    )
    (C {(echo)} {(Getting)} {(clang)} {(r) (DQ (${ VSub_Name CLANG_REVISION))} {(KW_In in)} 
      {(DQ (${ VSub_Name CLANG_DIR))}
    )
    (C {(svn)} {(co)} {(--force)} 
      {(DQ (${ VSub_Name LLVM_REPO_URL) ("/cfe/trunk@") (${ VSub_Name CLANG_REVISION))} {(DQ (${ VSub_Name CLANG_DIR))}
    )
    (C {(rm)} {(-rf)} {(DQ (${ VSub_Name LLVM_DIR) (/projects/compiler-rt))})
    (C {(echo)} {(Getting)} {(compiler-rt)} {(r) (DQ (${ VSub_Name CLANG_REVISION))} {(KW_In in)} 
      {(DQ (${ VSub_Name COMPILER_RT_DIR))}
    )
    (C {(svn)} {(co)} {(--force)} 
      {(DQ (${ VSub_Name LLVM_REPO_URL) ("/compiler-rt/trunk@") (${ VSub_Name CLANG_REVISION))} {(DQ (${ VSub_Name COMPILER_RT_DIR))}
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Darwin))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(Getting)} {(libc) (Lit_Other "+") (Lit_Other "+")} 
              {(r) (DQ (${ VSub_Name CLANG_REVISION))} {(KW_In in)} {(DQ (${ VSub_Name LIBCXX_DIR))}
            )
            (C {(svn)} {(co)} {(--force)} 
              {(DQ (${ VSub_Name LLVM_REPO_URL) ("/libcxx/trunk@") (${ VSub_Name CLANG_REVISION))} {(DQ (${ VSub_Name LIBCXX_DIR))}
            )
          ]
          spids: [-1 2747]
        )
      ]
      spids: [-1 2798]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Darwin))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(Getting)} {(libc) (Lit_Other "+") (Lit_Other "+") (abi)} 
              {(r) (DQ (${ VSub_Name CLANG_REVISION))} {(KW_In in)} {(DQ (${ VSub_Name LIBCXXABI_DIR))}
            )
            (C {(svn)} {(co)} {(--force)} 
              {(DQ (${ VSub_Name LLVM_REPO_URL) ("/libcxxabi/trunk@") (${ VSub_Name CLANG_REVISION))} {(DQ (${ VSub_Name LIBCXXABI_DIR))}
            )
          ]
          spids: [-1 2826]
        )
      ]
      spids: [-1 2878]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name "$with_patches"))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(pushd)} {(DQ (${ VSub_Name CLANG_DIR))})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: 
                        {("--- test/Index/crash-recovery-modules.m\t(revision 202554)\n") 
                          ("+++ test/Index/crash-recovery-modules.m\t(working copy)\n") ("@@ -12,6 +12,8 @@\n") (" \n") (" // REQUIRES: crash-recovery\n") (" // REQUIRES: shell\n") 
                          ("+// XFAIL: *\n") ("+//    (PR11974)\n") (" \n") (" @import Crash;\n")
                        }
                      do_expansion: False
                      here_end: EOF
                      was_filled: True
                      spids: [2913]
                    )
                  ]
                )
                (C {(patch)} {(-p0)})
              ]
              negated: False
            )
            (C {(popd)})
            (C {(pushd)} {(DQ (${ VSub_Name CLANG_DIR))})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: 
                        {("--- unittests/libclang/LibclangTest.cpp (revision 215949)\n") 
                          ("+++ unittests/libclang/LibclangTest.cpp (working copy)\n") ("@@ -431,7 +431,7 @@\n") ("   EXPECT_EQ(0U, clang_getNumDiagnostics(ClangTU));\n") (" }\n") ("\n") 
                          ("-TEST_F(LibclangReparseTest, ReparseWithModule) {\n") ("+TEST_F(LibclangReparseTest, DISABLED_ReparseWithModule) {\n") 
                          (
"   const char *HeaderTop = \"#ifndef H\\n#define H\\nstruct Foo { int bar;\";\n"
                          ) ("   const char *HeaderBottom = \"\\n};\\n#endif\\n\";\n") 
                          (
"   const char *MFile = \"#include \\\"HeaderFile.h\\\"\\nint main() {\"\n"
                          )
                        }
                      do_expansion: False
                      here_end: EOF
                      was_filled: True
                      spids: [2938]
                    )
                  ]
                )
                (C {(patch)} {(-p0)})
              ]
              negated: False
            )
            (C {(popd)})
            (C {(pushd)} {(DQ (${ VSub_Name LLVM_DIR))})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: 
                        {("--- test/Bindings/Go/go.test    (revision 223109)\n") 
                          ("+++ test/Bindings/Go/go.test    (working copy)\n") ("@@ -1,3 +1,3 @@\n") ("-; RUN: llvm-go test llvm.org/llvm/bindings/go/llvm\n") ("+; RUN: true\n") 
                          (" \n") (" ; REQUIRES: shell\n")
                        }
                      do_expansion: False
                      here_end: EOF
                      was_filled: True
                      spids: [2971]
                    )
                  ]
                )
                (C {(patch)} {(-p0)})
              ]
              negated: False
            )
            (C {(popd)})
            (C {(pushd)} {(DQ (${ VSub_Name COMPILER_RT_DIR))})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: -1
                      body: 
                        {("Index: CMakeLists.txt\n") 
                          ("===================================================================\n") ("--- CMakeLists.txt\t(revision 241602)\n") ("+++ CMakeLists.txt\t(working copy)\n") 
                          ("@@ -305,6 +305,7 @@\n") ("       list(APPEND SANITIZER_COMMON_SUPPORTED_OS iossim)\n") ("     endif()\n") ("   endif()\n") 
                          ("+  set(SANITIZER_MIN_OSX_VERSION \"10.7\")\n") ("   if(SANITIZER_MIN_OSX_VERSION VERSION_LESS \"10.7\")\n") 
                          (
"     message(FATAL_ERROR \"Too old OS X version: ${SANITIZER_MIN_OSX_VERSION}\")\n"
                          ) ("   endif()\n")
                        }
                      do_expansion: False
                      here_end: EOF
                      was_filled: True
                      spids: [3008]
                    )
                  ]
                )
                (C {(patch)} {(-p0)})
              ]
              negated: False
            )
            (C {(popd)})
          ]
          spids: [-1 2894]
        )
      ]
      spids: [-1 3025]
    )
    (C {(set)} {(-x)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CC)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CC>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(cc)})
                spids: [3040 3044]
              )
            }
          spids: [3039]
        )
      ]
      spids: [3039]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CXX)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name CXX>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{("c++")})
                spids: [3047 3051]
              )
            }
          spids: [3046]
        )
      ]
      spids: [3046]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name gcc_toolchain))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CC)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$gcc_toolchain") (/bin/gcc))}
                  spids: [3076]
                )
              ]
              spids: [3076]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CXX)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name "$gcc_toolchain") ("/bin/g++"))}
                  spids: [3083]
                )
              ]
              spids: [3083]
            )
            (C {(export)} 
              {(Lit_VarLike "LD_LIBRARY_PATH=") 
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(dirname)} 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(${ VSub_Name CXX)} 
                                        {(-print-file-name) (Lit_Other "=") (libstdc) (Lit_Other "+") 
                                          (Lit_Other "+") (.so.6)
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [3105 3116]
                              )
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [3102 3117]
                  )
                )
              }
            )
          ]
          spids: [-1 3069]
        )
      ]
      spids: [-1 3120]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CFLAGS) op:Equal rhs:{(DQ )} spids:[3123])]
      spids: [3123]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CXXFLAGS) op:Equal rhs:{(DQ )} spids:[3127])]
      spids: [3127]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:LDFLAGS) op:Equal rhs:{(DQ )} spids:[3131])]
      spids: [3131]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:deployment_target) op:Equal rhs:{(DQ )} spids:[3157])]
      spids: [3157]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Darwin))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CFLAGS)
                  op: Equal
                  rhs: 
                    {
                      (DQ ("-isysroot ") 
                        (CommandSubPart
                          command_list: (CommandList children:[(C {(xcrun)} {(--show-sdk-path)})])
                          left_token: <Left_CommandSub "$(">
                          spids: [3195 3199]
                        )
                      )
                    }
                  spids: [3192]
                )
              ]
              spids: [3192]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CXXFLAGS)
                  op: Equal
                  rhs: 
                    {
                      (DQ ("-stdlib=libc++ -nostdinc++ -I") (${ VSub_Name ABS_LIBCXX_DIR) ("/include ") 
                        (${ VSub_Name CFLAGS)
                      )
                    }
                  spids: [3203]
                )
              ]
              spids: [3203]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name bootstrap))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:deployment_target)
                          op: Equal
                          rhs: {(10.6)}
                          spids: [3235]
                        )
                      ]
                      spids: [3235]
                    )
                  ]
                  spids: [-1 3232]
                )
              ]
              spids: [-1 3239]
            )
          ]
          spids: [-1 3181]
        )
      ]
      spids: [-1 3241]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (DBracket expr:(BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name bootstrap))}))
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ABS_INSTALL_DIR)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name PWD) (/) (${ VSub_Name LLVM_BOOTSTRAP_INSTALL_DIR))}
                  spids: [3265]
                )
              ]
              spids: [3265]
            )
            (C {(echo)} {(DQ ("Building bootstrap compiler"))})
            (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name LLVM_BOOTSTRAP_DIR))})
            (C {(pushd)} {(DQ (${ VSub_Name LLVM_BOOTSTRAP_DIR))})
            (C {(cmake)} {(-GNinja)} {(-DCMAKE_BUILD_TYPE) (Lit_Other "=") (Release)} 
              {(-DLLVM_ENABLE_ASSERTIONS) (Lit_Other "=") (ON)} {(-DLLVM_TARGETS_TO_BUILD) (Lit_Other "=") (host)} {(-DLLVM_ENABLE_THREADS) (Lit_Other "=") (OFF)} 
              {(-DCMAKE_INSTALL_PREFIX) (Lit_Other "=") (DQ (${ VSub_Name ABS_INSTALL_DIR))} {(-DCMAKE_C_COMPILER) (Lit_Other "=") (DQ (${ VSub_Name CC))} 
              {(-DCMAKE_CXX_COMPILER) (Lit_Other "=") (DQ (${ VSub_Name CXX))} {(-DCMAKE_C_FLAGS) (Lit_Other "=") (DQ (${ VSub_Name CFLAGS))} 
              {(-DCMAKE_CXX_FLAGS) (Lit_Other "=") (DQ (${ VSub_Name CXXFLAGS))} {(../llvm)}
            )
            (C {(ninja)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name run_tests))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [(C {(ninja)} {(check-all)})]
                  spids: [-1 3407]
                )
              ]
              spids: [-1 3415]
            )
            (C {(ninja)} {(install)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name gcc_toolchain))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(cp)} {(-v)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(${ VSub_Name CXX)} 
                                    {(-print-file-name) (Lit_Other "=") (libstdc) (Lit_Other "+") 
                                      (Lit_Other "+") (.so.6)
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [3455 3466]
                          )
                        )
                      } {(DQ (${ VSub_Name ABS_INSTALL_DIR) (/lib/))}
                    )
                  ]
                  spids: [-1 3439]
                )
              ]
              spids: [-1 3479]
            )
            (C {(popd)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CC)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ABS_INSTALL_DIR) (/bin/clang))}
                  spids: [3486]
                )
              ]
              spids: [3486]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CXX)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ABS_INSTALL_DIR) ("/bin/clang++"))}
                  spids: [3495]
                )
              ]
              spids: [3495]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name gcc_toolchain))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CFLAGS)
                          op: Equal
                          rhs: {(DQ ("--gcc-toolchain=") (${ VSub_Name gcc_toolchain))}
                          spids: [3531]
                        )
                      ]
                      spids: [3531]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CXXFLAGS)
                          op: Equal
                          rhs: {(DQ ("--gcc-toolchain=") (${ VSub_Name gcc_toolchain))}
                          spids: [3540]
                        )
                      ]
                      spids: [3540]
                    )
                  ]
                  spids: [-1 3520]
                )
              ]
              spids: [-1 3549]
            )
            (C {(echo)} {(DQ ("Building final compiler"))})
          ]
          spids: [-1 3262]
        )
      ]
      spids: [-1 3559]
    )
    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name LLVM_BUILD_DIR))})
    (C {(pushd)} {(DQ (${ VSub_Name LLVM_BUILD_DIR))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Darwin))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(rm)} {(-rf)} {(libcxxbuild)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LIBCXXFLAGS)
                  op: Equal
                  rhs: {(DQ ("-O3 -std=c++11 -fstrict-aliasing"))}
                  spids: [3622]
                )
              ]
              spids: [3622]
            )
            (C {(mkdir)} {(-p)} {(libcxxbuild/libcxx)})
            (C {(pushd)} {(libcxxbuild/libcxx)})
            (C 
              {
                (BracedVarSub
                  token: <VSub_Name CXX>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{("c++")})
                  spids: [3649 3653]
                )
              } {(-c)} {(${ VSub_Name CXXFLAGS)} {(${ VSub_Name LIBCXXFLAGS)} 
              {(DQ (${ VSub_Name ABS_LIBCXX_DIR)) (/src/) (Lit_Other "*") (.cpp)}
            )
            (C {(popd)})
            (C {(mkdir)} {(-p)} {(libcxxbuild/libcxxabi)})
            (C {(pushd)} {(libcxxbuild/libcxxabi)})
            (C 
              {
                (BracedVarSub
                  token: <VSub_Name CXX>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{("c++")})
                  spids: [3691 3695]
                )
              } {(-c)} {(${ VSub_Name CXXFLAGS)} {(${ VSub_Name LIBCXXFLAGS)} 
              {(DQ (${ VSub_Name ABS_LIBCXXABI_DIR)) (/src/) (Lit_Other "*") (.cpp)} {(-I) (DQ (${ VSub_Name ABS_LIBCXXABI_DIR) (/include))}
            )
            (C {(popd)})
            (C {(pushd)} {(libcxxbuild)})
            (C 
              {
                (BracedVarSub
                  token: <VSub_Name CC>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(cc)})
                  spids: [3734 3738]
                )
              } {(libcxx/) (Lit_Other "*") (.o)} {(libcxxabi/) (Lit_Other "*") (.o)} {(-o)} 
              {(libc) (Lit_Other "+") (Lit_Other "+") (.1.dylib)} {(-dynamiclib)} {(-nodefaultlibs)} {(-current_version)} {(1)} {(-compatibility_version)} {(1)} {(-lSystem)} 
              {(-install_name)} {(Lit_Other "@") (executable_path/libc) (Lit_Other "+") (Lit_Other "+") (.dylib)} 
              {(-Wl) (Lit_Comma ",") (-unexported_symbols_list) (Lit_Comma ",") 
                (${ VSub_Name ABS_LIBCXX_DIR) (/lib/libc) (Lit_Other "+") (Lit_Other "+") (unexp.exp)
              } 
              {(-Wl) (Lit_Comma ",") (-force_symbols_not_weak_list) (Lit_Comma ",") 
                (${ VSub_Name ABS_LIBCXX_DIR) (/lib/notweak.exp)
              } 
              {(-Wl) (Lit_Comma ",") (-force_symbols_weak_list) (Lit_Comma ",") 
                (${ VSub_Name ABS_LIBCXX_DIR) (/lib/weak.exp)
              }
            )
            (C {(ln)} {(-sf)} {(libc) (Lit_Other "+") (Lit_Other "+") (.1.dylib)} 
              {(libc) (Lit_Other "+") (Lit_Other "+") (.dylib)}
            )
            (C {(popd)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:LDFLAGS)
                  op: PlusEqual
                  rhs: {(DQ ("-stdlib=libc++ -L") (${ VSub_Name PWD) (/libcxxbuild))}
                  spids: [3836]
                )
              ]
              spids: [3836]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name bootstrap))})
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(rm)} {(-rf)} {(DQ (${ VSub_Name ABS_LIBCXX_DIR))})
                    (C {(rm)} {(-rf)} {(DQ (${ VSub_Name ABS_LIBCXXABI_DIR))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CXXFLAGS)
                          op: Equal
                          rhs: 
                            {
                              (DQ ("-stdlib=libc++ -nostdinc++ -I") (${ VSub_Name ABS_INSTALL_DIR) 
                                ("/include/c++/v1 ") (${ VSub_Name CFLAGS)
                              )
                            }
                          spids: [3903]
                        )
                      ]
                      spids: [3903]
                    )
                  ]
                  spids: [-1 3862]
                )
              ]
              spids: [-1 3916]
            )
          ]
          spids: [-1 3612]
        )
      ]
      spids: [-1 3918]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:BINUTILS_INCDIR) op:Equal rhs:{(DQ )} spids:[3924])]
      spids: [3924]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Linux))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:BINUTILS_INCDIR)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name ABS_BINUTILS_DIR) (/Linux_x64/Release/include))}
                  spids: [3950]
                )
              ]
              spids: [3950]
            )
          ]
          spids: [-1 3947]
        )
      ]
      spids: [-1 3958]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (BracedVarSub
                            token: <VSub_Name LLVM_FORCE_HEAD_REVISION>
                            suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )})
                            spids: [3974 3979]
                          )
                        }
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CFLAGS)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name CFLAGS) (" -DLLVM_FORCE_HEAD_REVISION"))}
                  spids: [3987]
                )
              ]
              spids: [3987]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:CXXFLAGS)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name CXXFLAGS) (" -DLLVM_FORCE_HEAD_REVISION"))}
                  spids: [3996]
                )
              ]
              spids: [3996]
            )
          ]
          spids: [-1 3984]
        )
      ]
      spids: [-1 4004]
    )
    (C {(mkdir)} {(-v)} {(${ VSub_Name CHROME_TOOLS_SHIM_DIR)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(${ VSub_Name CHROME_TOOLS_SHIM_DIR) (/CMakeLists.txt)}
          spids: [4035]
        )
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ 
                (
"# Since tools/clang isn't actually a subdirectory, use the two argument version\n"
                ) ("# to specify where build artifacts go. CMake doesn't allow reusing the same\n") 
                (
"# binary dir for multiple source dirs, so the build artifacts have to go into a\n"
                ) ("# subdirectory...\n") ("add_subdirectory(") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                ("{CHROMIUM_TOOLS_SRC} ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("{CMAKE_CURRENT_BINARY_DIR}/a)\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [4042]
        )
      ]
    )
    (C {(rm)} {(-fv)} {(CMakeCache.txt)})
    (SimpleCommand
      words: [
        {(cmake)}
        {(-GNinja)}
        {(-DCMAKE_BUILD_TYPE) (Lit_Other "=") (Release)}
        {(-DLLVM_ENABLE_ASSERTIONS) (Lit_Other "=") (ON)}
        {(-DLLVM_ENABLE_THREADS) (Lit_Other "=") (OFF)}
        {(-DLLVM_BINUTILS_INCDIR) (Lit_Other "=") (DQ (${ VSub_Name BINUTILS_INCDIR))}
        {(-DCMAKE_C_COMPILER) (Lit_Other "=") (DQ (${ VSub_Name CC))}
        {(-DCMAKE_CXX_COMPILER) (Lit_Other "=") (DQ (${ VSub_Name CXX))}
        {(-DCMAKE_C_FLAGS) (Lit_Other "=") (DQ (${ VSub_Name CFLAGS))}
        {(-DCMAKE_CXX_FLAGS) (Lit_Other "=") (DQ (${ VSub_Name CXXFLAGS))}
        {(-DCMAKE_EXE_LINKER_FLAGS) (Lit_Other "=") (DQ (${ VSub_Name LDFLAGS))}
        {(-DCMAKE_SHARED_LINKER_FLAGS) (Lit_Other "=") (DQ (${ VSub_Name LDFLAGS))}
        {(-DCMAKE_MODULE_LINKER_FLAGS) (Lit_Other "=") (DQ (${ VSub_Name LDFLAGS))}
        {(-DCMAKE_INSTALL_PREFIX) (Lit_Other "=") (DQ (${ VSub_Name ABS_LLVM_BUILD_DIR))}
        {(-DCHROMIUM_TOOLS_SRC) (Lit_Other "=") (DQ (${ VSub_Name ABS_CHROMIUM_TOOLS_DIR))}
        {(-DCHROMIUM_TOOLS) (Lit_Other "=") (DQ (${ VSub_Name chrome_tools))}
        {(DQ (${ VSub_Name ABS_LLVM_DIR))}
      ]
      more_env: [
        (env_pair
          name: MACOSX_DEPLOYMENT_TARGET
          val: {(${ VSub_Name deployment_target)}
          spids: [4061]
        )
      ]
    )
    (C {(env)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name gcc_toolchain))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(mkdir)} {(-p)} {(lib)})
            (C {(cp)} {(-v)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(${ VSub_Name CXX)} {(${ VSub_Name CXXFLAGS)} 
                            {(-print-file-name) (Lit_Other "=") (libstdc) (Lit_Other "+") 
                              (Lit_Other "+") (.so.6)
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [4243 4258]
                  )
                )
              } {(lib/)}
            )
          ]
          spids: [-1 4224]
        )
      ]
      spids: [-1 4263]
    )
    (C {(ninja)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name chrome_tools))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(ninja)} {(cr-install)})]
          spids: [-1 4286]
        )
      ]
      spids: [-1 4293]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:STRIP_FLAGS) op:Equal rhs:{(SQ )} spids:[4296])]
      spids: [4296]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(DQ (${ VSub_Name OS))} {(Lit_Other "=")} {(DQ (Darwin))} 
                  {(Lit_Other "]")}
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:STRIP_FLAGS) op:Equal rhs:{(-x)} spids:[4324])]
              spids: [4324]
            )
            (C {(cp)} {(libcxxbuild/libc) (Lit_Other "+") (Lit_Other "+") (.1.dylib)} {(bin/)})
          ]
          spids: [-1 4317]
        )
      ]
      spids: [-1 4338]
    )
    (C {(strip)} {(${ VSub_Name STRIP_FLAGS)} {(bin/clang)})
    (C {(popd)})
    (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name COMPILER_RT_BUILD_DIR))})
    (C {(pushd)} {(DQ (${ VSub_Name COMPILER_RT_BUILD_DIR))})
    (C {(rm)} {(-fv)} {(CMakeCache.txt)})
    (SimpleCommand
      words: [
        {(cmake)}
        {(-GNinja)}
        {(-DCMAKE_BUILD_TYPE) (Lit_Other "=") (Release)}
        {(-DLLVM_ENABLE_ASSERTIONS) (Lit_Other "=") (ON)}
        {(-DLLVM_ENABLE_THREADS) (Lit_Other "=") (OFF)}
        {(-DCMAKE_C_COMPILER) (Lit_Other "=") (DQ (${ VSub_Name CC))}
        {(-DCMAKE_CXX_COMPILER) (Lit_Other "=") (DQ (${ VSub_Name CXX))}
        {(-DLLVM_CONFIG_PATH) (Lit_Other "=") 
          (DQ (${ VSub_Name ABS_LLVM_BUILD_DIR) (/bin/llvm-config))
        }
        {(DQ (${ VSub_Name ABS_COMPILER_RT_DIR))}
      ]
      more_env: [
        (env_pair
          name: MACOSX_DEPLOYMENT_TARGET
          val: {(${ VSub_Name deployment_target)}
          spids: [4379]
        )
      ]
    )
    (C {(ninja)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CLANG_VERSION)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(DQ (${ VSub_Name ABS_LLVM_BUILD_DIR) (/bin/clang))} {(--version)})
                          (C {(sed)} {(-ne)} 
                            {(SQ <"s/clang version \\([0-9]\\.[0-9]\\.[0-9]\\).*/\\1/p">)}
                          )
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [4456 4477]
              )
            }
          spids: [4455]
        )
      ]
      spids: [4455]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ABS_LLVM_CLANG_LIB_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name ABS_LLVM_BUILD_DIR) (/lib/clang/) (${ VSub_Name CLANG_VERSION))}
          spids: [4479]
        )
      ]
      spids: [4479]
    )
    (Pipeline
      children: [
        (C {(tar)} {(-c)} {(Lit_Other "*") (blacklist.txt)})
        (C {(tar)} {(-C)} {(${ VSub_Name ABS_LLVM_CLANG_LIB_DIR)} {(-xv)})
      ]
      negated: False
    )
    (Pipeline
      children: [
        (C {(tar)} {(-c)} {(include/sanitizer)})
        (C {(tar)} {(-C)} {(${ VSub_Name ABS_LLVM_CLANG_LIB_DIR)} {(-xv)})
      ]
      negated: False
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (BoolBinary
                      op_id: BoolBinary_GlobEqual
                      left: {(DQ (${ VSub_Name OS))}
                      right: {(DQ (Darwin))}
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Pipeline
              children: [
                (C {(tar)} {(-c)} {(lib/darwin)})
                (C {(tar)} {(-C)} {(${ VSub_Name ABS_LLVM_CLANG_LIB_DIR)} {(-xv)})
              ]
              negated: False
            )
          ]
          spids: [-1 4546]
        )
      ]
      else_action: [
        (Pipeline
          children: [
            (C {(tar)} {(-c)} {(lib/linux)})
            (C {(tar)} {(-C)} {(${ VSub_Name ABS_LLVM_CLANG_LIB_DIR)} {(-xv)})
          ]
          negated: False
        )
      ]
      spids: [4567 4588]
    )
    (C {(popd)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ (${ VSub_Name with_android))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(${ VSub_Name ANDROID_NDK_DIR) (/build/tools/make-standalone-toolchain.sh)} 
              {(--platform) (Lit_Other "=") (android-19)} {(--install-dir) (Lit_Other "=") (DQ (${ VSub_Name LLVM_BUILD_DIR) (/android-toolchain))} 
              {(--system) (Lit_Other "=") (linux-x86_64)} {(--stl) (Lit_Other "=") (stlport)} {(--toolchain) (Lit_Other "=") (arm-linux-androideabi-4.9)}
            )
            (C {(rm)} {(-v)} 
              {(DQ (${ VSub_Name LLVM_BUILD_DIR)) (/android-toolchain/include/c) (Lit_Other "+") 
                (Lit_Other "+") (/) (Lit_Other "*") (/unwind.h)
              }
            )
            (C {(mkdir)} {(-p)} {(${ VSub_Name LLVM_BUILD_DIR) (/android)})
            (C {(pushd)} {(${ VSub_Name LLVM_BUILD_DIR) (/android)})
            (C {(rm)} {(-fv)} {(CMakeCache.txt)})
            (SimpleCommand
              words: [
                {(cmake)}
                {(-GNinja)}
                {(-DCMAKE_BUILD_TYPE) (Lit_Other "=") (Release)}
                {(-DLLVM_ENABLE_ASSERTIONS) (Lit_Other "=") (ON)}
                {(-DLLVM_ENABLE_THREADS) (Lit_Other "=") (OFF)}
                {(-DCMAKE_C_COMPILER) (Lit_Other "=") (${ VSub_Name PWD) (/../bin/clang)}
                {(-DCMAKE_CXX_COMPILER) (Lit_Other "=") (${ VSub_Name PWD) (/../bin/clang) 
                  (Lit_Other "+") (Lit_Other "+")
                }
                {(-DLLVM_CONFIG_PATH) (Lit_Other "=") (${ VSub_Name PWD) (/../bin/llvm-config)}
                {(-DCMAKE_C_FLAGS) (Lit_Other "=") 
                  (DQ ("--target=arm-linux-androideabi --sysroot=") (${ VSub_Name PWD) 
                    ("/../android-toolchain/sysroot -B") (${ VSub_Name PWD) (/../android-toolchain)
                  )
                }
                {(-DCMAKE_CXX_FLAGS) (Lit_Other "=") 
                  (DQ ("--target=arm-linux-androideabi --sysroot=") (${ VSub_Name PWD) 
                    ("/../android-toolchain/sysroot -B") (${ VSub_Name PWD) (/../android-toolchain)
                  )
                }
                {(-DANDROID) (Lit_Other "=") (1)}
                {(DQ (${ VSub_Name ABS_COMPILER_RT_DIR))}
              ]
              more_env: [
                (env_pair
                  name: MACOSX_DEPLOYMENT_TARGET
                  val: {(${ VSub_Name deployment_target)}
                  spids: [4713]
                )
              ]
            )
            (C {(ninja)} {(libclang_rt.asan-arm-android.so)})
            (C {(cp)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(find)} {(-name)} {(libclang_rt.asan-arm-android.so)})]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [4829 4835]
                  )
                )
              } {(DQ (${ VSub_Name ABS_LLVM_CLANG_LIB_DIR) (/lib/linux/))}
            )
            (C {(popd)})
          ]
          spids: [-1 4609]
        )
      ]
      spids: [-1 4848]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: 
                    (LogicalOr
                      left: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name "$run_tests"))})
                      right: 
                        (BoolUnary
                          op_id: BoolUnary_n
                          child: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name LLVM_FORCE_HEAD_REVISION>
                                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{("''")})
                                  spids: [4866 4870]
                                )
                              )
                            }
                        )
                    )
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(ninja)} {(-C)} {(DQ (${ VSub_Name LLVM_BUILD_DIR))} {(cr-check-all)})]
          spids: [-1 4876]
        )
      ]
      spids: [-1 4895]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (DBracket
                  expr: (BoolUnary op_id:BoolUnary_n child:{(DQ ($ VSub_Name "$run_tests"))})
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [(C {(ninja)} {(-C)} {(DQ (${ VSub_Name LLVM_BUILD_DIR))} {(check-all)})]
          spids: [-1 4910]
        )
      ]
      spids: [-1 4929]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ (${ VSub_Name PACKAGE_VERSION))}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(DQ (${ VSub_Name STAMP_FILE))}
          spids: [4943]
        )
      ]
    )
  ]
)