Quick Search:

Mode

Context

Displaying 3 lines of context. None | Less | More | Full

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.230
 
1.231
 
MAIN:ragge:20081115140239
 
pftn.c
_>129129 static void ssave(struct symtab *);
 130130 static void alprint(union arglist *al, int in);
 131131 static void lcommadd(struct symtab *sp);
<> 132+extern int fun_inline;
132133 
 133134 int ddebug = 0;
 134135 
     
 !
140141 void
 141142 defid(NODE *q, int class)
 142143 {
<>143 -        extern int fun_inline;
144144         struct symtab *p;
 145145         TWORD type, qual;
 146146         TWORD stp, stq;
     
 !
272272                 case FORTRAN:
 273273                 case UFORTRAN:
 274274                         goto done;
<> 275+                case SNULL:
  276+                        if (p->sflags & SINLINE) {
  277+                                p->sclass = EXTDEF;
  278+                                inline_ref(p);
  279+                                goto done;
275280                         }
<> 281+                        break;
  282+                }
276283                 break;
 277284 
 278285         case STATIC:
     
 !
415422                         rpole->rstr = 0;
 416423                 break;
 417424         case SNULL:
<> 425+#ifdef notdef
418426                 if (fun_inline) {
 419427                         p->slevel = 1;
 420428                         p->soffset = getlab();
 421429                 }
<> 430+#endif
  431+                break;
422432         }
 423433 
 424434 #ifdef STABS
     
 !
585595         plabel(prolab); /* after prolog, used in optimization */
 586596         retlab = getlab();
 587597         bfcode(parr, nparams);
<> 598+        if (fun_inline && xinline)
  599+                inline_args(parr, nparams);
588600         plabel(getlab()); /* used when spilling */
 589601         if (parlink)
 590602                 ecomp(parlink);
     
 !
21272139  * Returns a merged node (via buildtree() of function and arguments.
 21282140  */
 21292141 NODE *
<>2130 -doacall(NODE *f, NODE *a)
  2142+doacall(struct symtab *sp, NODE *f, NODE *a)
21312143 {
 21322144         NODE *w, *r;
 21332145         union arglist *al;
     
 !
22132225         }
 22142226 #ifdef PCC_DEBUG
 22152227         if (pdebug) {
<>2216 -                printf("arglist for %p\n",
  2228+                printf("arglist for %s\n",
22172229                     f->n_sp != NULL ? f->n_sp->sname : "function pointer");
 22182230                 alprint(al, 0);
 22192231         }
     
 !
23542366         if (apole != NULL)
 23552367                 uerror("too many arguments to function");
 23562368 
<>2357 -build:  if (xinline && f->n_sp != NULL)
 2358 -                return inlinetree(f->n_sp, a);
 2359 -        else
 2360 -                return buildtree(a == NIL ? UCALL : CALL, f, a);
  2369+build:  if (sp != NULL && (sp->sflags & SINLINE) && (w = inlinetree(sp, f, a)))
  2370+                return w;
  2371+        return buildtree(a == NIL ? UCALL : CALL, f, a);
<_23612372 }
 23622373 
 23632374 static int
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-09-23 18:23 +0200