item = build1 (code, type, node);
switch (ffe_is_emulate_complex () ? code : NOP_EXPR) { tree realtype;  case REALPART_EXPR: item = build (COMPONENT_REF, type, node, TYPE_FIELDS (TREE_TYPE (node))); break;  case IMAGPART_EXPR: item = build (COMPONENT_REF, type, node, TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (node)))); break;   case NEGATE_EXPR: if (TREE_CODE (type) != RECORD_TYPE) { item = build1 (code, type, node); break; } node = ffecom_stabilize_aggregate_ (node); realtype = TREE_TYPE (TYPE_FIELDS (type)); item = ffecom_2 (COMPLEX_EXPR, type, ffecom_1 (NEGATE_EXPR, realtype, ffecom_1 (REALPART_EXPR, realtype, node)), ffecom_1 (NEGATE_EXPR, realtype, ffecom_1 (IMAGPART_EXPR, realtype, node))); break;  default: item = build1 (code, type, node); break; }
ffecom_1 (enum tree_code code, tree type, tree node){  tree item;  if ((node == error_mark_node)      || (type == error_mark_node))    return error_mark_node;  if (code == ADDR_EXPR)    {      if (!mark_addressable (node))	assert ("can't mark_addressable this node!" == NULL);    }  item = build1 (code, type, node);  if (TREE_SIDE_EFFECTS (node))    TREE_SIDE_EFFECTS (item) = 1;  if ((code == ADDR_EXPR) && staticp (node))    TREE_CONSTANT (item) = 1;  return fold (item);}