(command.CommandList
  children: [
    (C {<setupfor>} {<gcc-core>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_CPLUSPLUS'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.Simple
          words: [{<setupfor>} {<gcc-g> <Id.Lit_Other '+'> <Id.Lit_Other '+'>}]
          more_env: [(env_pair name:REUSE_CURSRC val:{<1>} spids:[28])]
          do_fork: T
        )
      ]
    )
    (C {<blank_workdir>} {<build-gcc>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<sed>} {<-i>} {(SQ <'s@^STMP_FIX.*@@'>)} {(DQ (${ Id.VSub_Name CURSRC) <'/gcc/Makefile.in'>)})
        (C {<dienow>})
      ]
    )
    (command.ShFunction
      name: configure_gcc
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_CPLUSPLUS'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:STUFF)
                      op: assign_op.Equal
                      rhs: {(DQ <'--enable-languages=c,c++ --disable-libstdcxx-pch'>)}
                      spids: [103]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:STUFF)
                      op: assign_op.Equal
                      rhs: {(DQ <'--enable-languages=c'>)}
                      spids: [111]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {(DQ ($ Id.VSub_DollarName '$CURSRC') <'/configure'>)} 
                  {<--target> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$CROSS_TARGET'))} {<--prefix> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$STAGE_DIR'))} {<--disable-multilib>} 
                  {<--disable-nls>} {<--enable-c99>} {<--enable-long-long>} {<--enable-__cxa_atexit>} {($ Id.VSub_DollarName '$STUFF')} 
                  {<--program-prefix> <Id.Lit_Equals '='> 
                    (DQ ($ Id.VSub_DollarName '$TOOLCHAIN_PREFIX'))
                  } {(DQ ($ Id.VSub_At '$@'))} {($ Id.VSub_DollarName '$GCC_FLAGS')}
                )
                (C {<mkdir>} {<-p>} {<gcc>})
                (C {<ln>} {<-s>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<which>} 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name CC_FOR_TARGET>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VTest_ColonHyphen ':-'>
                                    arg_word: {<cc>}
                                  )
                              )
                            }
                          )
                      )
                    )
                  } {<'gcc/xgcc'>}
                )
                (C {<dienow>})
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$HOST_ARCH'))} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<configure_gcc>}
                {<--disable-threads>}
                {<--disable-shared>}
                {<--host> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$CROSS_HOST'))}
              ]
              more_env: [
                (env_pair
                  name: AR_FOR_TARGET
                  val: {(DQ (${ Id.VSub_Name CC_PREFIX) <ar>)}
                  spids: [260]
                )
              ]
              do_fork: T
            )
          ]
          spids: [219 231]
        )
      ]
      else_action: [
        (command.AndOr
          ops: [Id.Op_DAmp Id.Op_DPipe]
          children: [
            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$ELF2FLT'))} 
              {<Id.Lit_RBracket ']'>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:X)
                  op: assign_op.Equal
                  rhs: {<--enable-shared>}
                  spids: [315]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:X)
                  op: assign_op.Equal
                  rhs: {<--disable-shared>}
                  spids: [320]
                )
              ]
            )
          ]
        )
        (command.Simple
          words: [
            {<configure_gcc>}
            {<--enable-threads> <Id.Lit_Equals '='> <posix>}
            {($ Id.VSub_DollarName '$X')}
            {<--build> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$CROSS_HOST'))}
            {<--host> <Id.Lit_Equals '='> 
              (DQ 
                (braced_var_sub
                  token: <Id.VSub_Name CROSS_TARGET>
                  suffix_op: 
                    (suffix_op.PatSub
                      pat: {<unknown-elf>}
                      replace: {<walrus-elf>}
                      replace_mode: Id.Undefined_Tok
                    )
                )
              )
            }
          ]
          more_env: [
            (env_pair name:CC val:{(DQ (${ Id.VSub_Name HOST_ARCH) <-cc>)} spids:[324])
            (env_pair name:AR val:{(DQ (${ Id.VSub_Name HOST_ARCH) <-ar>)} spids:[332])
            (env_pair name:AS val:{(DQ (${ Id.VSub_Name HOST_ARCH) <-as>)} spids:[340])
            (env_pair name:LD val:{(DQ (${ Id.VSub_Name HOST_ARCH) <-ld>)} spids:[350])
            (env_pair name:NM val:{(DQ (${ Id.VSub_Name HOST_ARCH) <-nm>)} spids:[358])
            (env_pair
              name: CC_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <cc>)}
              spids: [368]
            )
            (env_pair
              name: AR_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <ar>)}
              spids: [376]
            )
            (env_pair
              name: NM_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <nm>)}
              spids: [386]
            )
            (env_pair
              name: GCC_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <cc>)}
              spids: [394]
            )
            (env_pair
              name: AS_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <as>)}
              spids: [404]
            )
            (env_pair
              name: LD_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <ld>)}
              spids: [412]
            )
            (env_pair
              name: CXX_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <'c++'>)}
              spids: [422]
            )
            (env_pair
              name: ac_cv_path_AR_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <ar>)}
              spids: [432]
            )
            (env_pair
              name: ac_cv_path_RANLIB_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <ranlib>)}
              spids: [442]
            )
            (env_pair
              name: ac_cv_path_NM_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <nm>)}
              spids: [452]
            )
            (env_pair
              name: ac_cv_path_AS_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <as>)}
              spids: [462]
            )
            (env_pair
              name: ac_cv_path_LD_FOR_TARGET
              val: {(DQ (${ Id.VSub_Name CC_PREFIX) <ld>)}
              spids: [472]
            )
          ]
          do_fork: T
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
      children: [
        (C {<make>} {<-j>} {($ Id.VSub_DollarName '$CPUS')} {<configure-host>})
        (C {<make>} {<-j>} {($ Id.VSub_DollarName '$CPUS')} {<all-gcc>} 
          {<Id.Lit_VarLike 'LDFLAGS='> (DQ ($ Id.VSub_DollarName '$STATIC_FLAGS'))}
        )
        (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) <'/cc/lib'>})
        (C {<dienow>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                      {(DQ ($ Id.VSub_DollarName '$HOST_ARCH'))} {<Id.Lit_RBracket ']'>}
                    )
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_CPLUSPLUS'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              ]
            )
          action: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<make>} {<-j>} {($ Id.VSub_DollarName '$CPUS')} 
                  {<configure-target-libstdc> <Id.Lit_Other '+'> <Id.Lit_Other '+'> <-v3>} {<Id.Lit_VarLike 'SHELL='> <sh>}
                )
                (C {<cd>} 
                  {(DQ ($ Id.VSub_DollarName '$CROSS_TARGET')) <'/libstdc'> <Id.Lit_Other '+'> 
                    <Id.Lit_Other '+'> <'-v3/libsupc'> <Id.Lit_Other '+'> <Id.Lit_Other '+'>
                  }
                )
                (C {<make>} {<-j>} {($ Id.VSub_DollarName '$CPUS')})
                (C {<mv>} {<'.libs/libsupc'> <Id.Lit_Other '+'> <Id.Lit_Other '+'> <.a>} 
                  {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) <'/cc/lib'>}
                )
                (C {<cd>} {<'../../..'>})
                (C {<dienow>})
              ]
            )
          ]
          spids: [557 583]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
      children: [
        (C {<ln>} {<-s>} {<lib>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/lib64'>)})
        (C {<make>} {<-j>} {($ Id.VSub_DollarName '$CPUS')} {<install-gcc>})
        (C {<rm>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/lib64'>)})
        (C {<dienow>})
      ]
    )
    (command.Simple
      words: [
        {<rm>}
        {<-rf>}
        {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) <'/lib/gcc/'> <Id.Lit_Star '*'> <'/'> 
          <Id.Lit_Star '*'> <'/install-tools'>
        }
      ]
      redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
      children: [
        (C {<mv>} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) <'/lib/gcc/'> <Id.Lit_Star '*'> <'/'> 
            <Id.Lit_Star '*'> <'/include'>
          } {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) <'/cc/include'>}
        )
        (C {<mv>} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) <'/lib/gcc/'> <Id.Lit_Star '*'> <'/'> 
            <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>
          } {(DQ ($ Id.VSub_DollarName '$STAGE_DIR')) <'/cc/lib'>}
        )
        (C {<ln>} {<-s>} {(DQ ($ Id.VSub_DollarName '$CROSS_TARGET'))} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools'>)}
        )
        (C {<cp>} 
          {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/libexec/gcc/'>) <Id.Lit_Star '*'> <'/'> 
            <Id.Lit_Star '*'> <'/c'> <Id.Lit_Star '*'>
          } {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools/bin'>)}
        )
        (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/libexec'>)})
        (C {<dienow>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
      children: [
        (C {<mv>} 
          {
            (DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/bin/'> (${ Id.VSub_Name TOOLCHAIN_PREFIX) <gcc>)
          } {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools/bin/cc'>)}
        )
        (C {<ln>} {<-sf>} {(DQ (${ Id.VSub_Name TOOLCHAIN_PREFIX) <cc>)} 
          {
            (DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/bin/'> (${ Id.VSub_Name TOOLCHAIN_PREFIX) <gcc>)
          }
        )
        (C {<ln>} {<-s>} {<cc>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools/bin/rawcc'>)})
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_CPLUSPLUS'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              action: [
                (command.AndOr
                  ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
                  children: [
                    (C {<mv>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/bin/'> 
                          (${ Id.VSub_Name TOOLCHAIN_PREFIX) <'g++'>
                        )
                      } {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools/bin/c++'>)}
                    )
                    (C {<ln>} {<-sf>} {(DQ (${ Id.VSub_Name TOOLCHAIN_PREFIX) <cc>)} 
                      {
                        (DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/bin/'> 
                          (${ Id.VSub_Name TOOLCHAIN_PREFIX) <'g++'>
                        )
                      }
                    )
                    (C {<ln>} {<-sf>} {(DQ (${ Id.VSub_Name TOOLCHAIN_PREFIX) <cc>)} 
                      {
                        (DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/bin/'> 
                          (${ Id.VSub_Name TOOLCHAIN_PREFIX) <'c++'>
                        )
                      }
                    )
                    (C {<ln>} {<-s>} {<c> <Id.Lit_Other '+'> <Id.Lit_Other '+'>} 
                      {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools/bin/raw++'>)}
                    )
                    (C {<dienow>})
                  ]
                )
              ]
              spids: [907 919]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<cd>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools'>)}) (C {<dienow>})]
    )
    (command.Simple
      words: [{<ln>} {<-s>} {<cc>} {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools/bin/gcc'>)}]
      redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$NO_CPLUSPLUS'))} 
          {<Id.Lit_RBracket ']'>}
        )
        (command.Simple
          words: [
            {<ln>}
            {<-s>}
            {<c> <Id.Lit_Other '+'> <Id.Lit_Other '+'>}
            {(DQ ($ Id.VSub_DollarName '$STAGE_DIR') <'/tools/bin/g++'>)}
          ]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
      ]
    )
    (C {<rm>} {<-rf>} 
      (word.BracedTree
        parts: [
          (DQ (${ Id.VSub_Name STAGE_DIR))
          <'/'>
          (word_part.BracedTuple
            words: [
              {<'lib/gcc'>}
              {<'libexec/gcc/install-tools'>}
              {<'bin/'> (${ Id.VSub_Name ARCH) <-unknown-> <Id.Lit_Star '*'>}
            ]
          )
        ]
      )
    )
    (command.Simple
      words: [{<cleanup>}]
      more_env: [(env_pair name:PACKAGE val:{<gcc>} spids:[1093])]
      do_fork: T
    )
  ]
)