comparison gcc/c-parser.c @ 101:5c3ad79fc15b

modify implemeted __rectype expression
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 16 Feb 2012 18:15:22 +0900
parents 29a62213c1d0
children fdc380f80c07
comparison
equal deleted inserted replaced
100:29a62213c1d0 101:5c3ad79fc15b
1635 else 1635 else
1636 { 1636 {
1637 tree d = start_decl (declarator, specs, false, 1637 tree d = start_decl (declarator, specs, false,
1638 chainon (postfix_attrs, 1638 chainon (postfix_attrs,
1639 all_prefix_attrs)); 1639 all_prefix_attrs));
1640 #ifndef noCbC
1641 if(specs->storage_class == csc_typedef) {
1642 tree tmp = TREE_TYPE(d);
1643 while(TREE_CODE(tmp) == POINTER_TYPE) tmp = TREE_TYPE(tmp);
1644 if(TREE_CODE(tmp) == FUNCTION_TYPE) {
1645 tree t = declarator->u.arg_info->parms;
1646 while(t) {
1647 tree tmptype = t;
1648 while(TREE_TYPE(tmptype) && TREE_CODE(TREE_TYPE(tmptype)) == POINTER_TYPE) {
1649 t = TREE_TYPE(tmptype);
1650 tmptype = TREE_TYPE(t);
1651 }
1652 if(TREE_CODE(tmptype) != FUNCTION_TYPE) {
1653 t = TREE_CHAIN(t);
1654 continue;
1655 }
1656 if(IS_RECTYPE(tmptype)) {
1657 TREE_TYPE(t) = tmp;
1658 break;
1659 }
1660 t = TREE_CHAIN(t);
1661 }
1662 }
1663 }
1664 #endif
1640 if (d) 1665 if (d)
1641 finish_decl (d, UNKNOWN_LOCATION, NULL_TREE, 1666 finish_decl (d, UNKNOWN_LOCATION, NULL_TREE,
1642 NULL_TREE, asm_name); 1667 NULL_TREE, asm_name);
1643 1668
1644 if (c_parser_next_token_is_keyword (parser, RID_IN)) 1669 if (c_parser_next_token_is_keyword (parser, RID_IN))