Previous: GIMPLE Example, Up: GIMPLE
10.2.6 Rough GIMPLE Grammar
function : FUNCTION_DECL DECL_SAVED_TREE -> compound-stmt compound-stmt: STATEMENT_LIST members -> stmt stmt : block | if-stmt | switch-stmt | goto-stmt | return-stmt | resx-stmt | label-stmt | try-stmt | modify-stmt | call-stmt block : BIND_EXPR BIND_EXPR_VARS -> chain of DECLs BIND_EXPR_BLOCK -> BLOCK BIND_EXPR_BODY -> compound-stmt if-stmt : COND_EXPR op0 -> condition op1 -> compound-stmt op2 -> compound-stmt switch-stmt : SWITCH_EXPR op0 -> val op1 -> NULL op2 -> TREE_VEC of CASE_LABEL_EXPRs The CASE_LABEL_EXPRs are sorted by CASE_LOW, and default is last. goto-stmt : GOTO_EXPR op0 -> LABEL_DECL | val return-stmt : RETURN_EXPR op0 -> return-value return-value : NULL | RESULT_DECL | MODIFY_EXPR op0 -> RESULT_DECL op1 -> lhs resx-stmt : RESX_EXPR label-stmt : LABEL_EXPR op0 -> LABEL_DECL try-stmt : TRY_CATCH_EXPR op0 -> compound-stmt op1 -> handler | TRY_FINALLY_EXPR op0 -> compound-stmt op1 -> compound-stmt handler : catch-seq | EH_FILTER_EXPR | compound-stmt catch-seq : STATEMENT_LIST members -> CATCH_EXPR modify-stmt : MODIFY_EXPR op0 -> lhs op1 -> rhs call-stmt : CALL_EXPR op0 -> val | OBJ_TYPE_REF op1 -> call-arg-list call-arg-list: TREE_LIST members -> lhs | CONST addr-expr-arg: ID | compref addressable : addr-expr-arg | indirectref with-size-arg: addressable | call-stmt indirectref : INDIRECT_REF op0 -> val lhs : addressable | bitfieldref | WITH_SIZE_EXPR op0 -> with-size-arg op1 -> val min-lval : ID | indirectref bitfieldref : BIT_FIELD_REF op0 -> inner-compref op1 -> CONST op2 -> var compref : inner-compref | TARGET_MEM_REF op0 -> ID op1 -> val op2 -> val op3 -> CONST op4 -> CONST | REALPART_EXPR op0 -> inner-compref | IMAGPART_EXPR op0 -> inner-compref inner-compref: min-lval | COMPONENT_REF op0 -> inner-compref op1 -> FIELD_DECL op2 -> val | ARRAY_REF op0 -> inner-compref op1 -> val op2 -> val op3 -> val | ARRAY_RANGE_REF op0 -> inner-compref op1 -> val op2 -> val op3 -> val | VIEW_CONVERT_EXPR op0 -> inner-compref condition : val | RELOP op0 -> val op1 -> val val : ID | CONST rhs : lhs | CONST | call-stmt | ADDR_EXPR op0 -> addr-expr-arg | UNOP op0 -> val | BINOP op0 -> val op1 -> val | RELOP op0 -> val op1 -> val | COND_EXPR op0 -> condition op1 -> val op2 -> val