Skip to content

Commit

Permalink
Merge pull request #2592 from 9rnsr/fix_inline_nrvo
Browse files Browse the repository at this point in the history
Do inline for the variable initialization with NRVO function call
  • Loading branch information
WalterBright committed Nov 8, 2013
2 parents 864fcda + 6f80983 commit 5ea29c9
Show file tree
Hide file tree
Showing 4 changed files with 263 additions and 98 deletions.
2 changes: 1 addition & 1 deletion src/declaration.h
Expand Up @@ -709,7 +709,7 @@ class FuncDeclaration : public Declaration
void ctfeCompile();
void inlineScan();
int canInline(int hasthis, int hdrscan, int statementsToo);
Expression *expandInline(InlineScanState *iss, Expression *ethis, Expressions *arguments, Statement **ps);
Expression *expandInline(InlineScanState *iss, Expression *eret, Expression *ethis, Expressions *arguments, Statement **ps);
const char *kind();
void toDocBuffer(OutBuffer *buf, Scope *sc);
FuncDeclaration *isUnique();
Expand Down
4 changes: 4 additions & 0 deletions src/expression.h
Expand Up @@ -1089,6 +1089,7 @@ class CallExp : public UnaExp
int inlineCost3(InlineCostState *ics);
Expression *doInline(InlineDoState *ids);
Expression *inlineScan(InlineScanState *iss);
Expression *inlineScan(InlineScanState *iss, Expression *eret);
};

class AddrExp : public UnaExp
Expand Down Expand Up @@ -1397,6 +1398,9 @@ class AssignExp : public BinExp
Identifier *opId(); // For operator overloading
void buildArrayIdent(OutBuffer *buf, Expressions *arguments);
Expression *buildArrayLoop(Parameters *fparams);

Expression *inlineScan(InlineScanState *iss);

elem *toElem(IRState *irs);
};

Expand Down

0 comments on commit 5ea29c9

Please sign in to comment.