(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                      {(DQ <-p>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:with_patchlevel)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [52]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>)
          ]
          spids: [31 49]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compiler)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Star '$*'))}
          spids: [63]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} 
                      {(braced_var_sub token:<Id.VSub_Name compiler> prefix_op:(Id.VSub_Pound))} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Error: No compiler specified.'>)})
            (C {<printf>} 
              {
                (DQ <'Usage:'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <t> 
                  ($ Id.VSub_Number '$0') <' <gcc-command>'> <Id.Lit_BadBackslash '\\'> <n>
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [69 85]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MAJOR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {<__GNUC__>})
                      (C {($ Id.VSub_DollarName '$compiler')} {<-E>} {<-x>} {<c>} {<->})
                      (C {<tail>} {<-n>} {<1>})
                    ]
                    negated: F
                  )
              )
            }
          spids: [117]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MINOR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {<__GNUC_MINOR__>})
                      (C {($ Id.VSub_DollarName '$compiler')} {<-E>} {<-x>} {<c>} {<->})
                      (C {<tail>} {<-n>} {<1>})
                    ]
                    negated: F
                  )
              )
            }
          spids: [144]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ <x> ($ Id.VSub_DollarName '$with_patchlevel'))} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <x>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PATCHLEVEL)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {<__GNUC_PATCHLEVEL__>})
                              (C {($ Id.VSub_DollarName '$compiler')} {<-E>} {<-x>} {<c>} {<->})
                              (C {<tail>} {<-n>} {<1>})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [194]
                )
              ]
            )
            (C {<printf>} 
              {(DQ <'%02d%02d%02d'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <n>)} {($ Id.VSub_DollarName '$MAJOR')} {($ Id.VSub_DollarName '$MINOR')} 
              {($ Id.VSub_DollarName '$PATCHLEVEL')}
            )
          ]
          spids: [171 191]
        )
      ]
      else_action: [
        (C {<printf>} 
          {(DQ <'%02d%02d'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <n>)} {($ Id.VSub_DollarName '$MAJOR')} {($ Id.VSub_DollarName '$MINOR')}
        )
      ]
    )
  ]
)