"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/dmd/glue.d" between
dmd-2.093.0.tar.gz and dmd-2.093.1.tar.gz

About: DMD (Digital Mars D) is the D reference compiler. D is an object-oriented, imperative, multi-paradigm system programming language.

glue.d  (dmd-2.093.0):glue.d  (dmd-2.093.1)
skipping to change at line 907 skipping to change at line 907
int reverse = tyrevfunc(s.Stype.Tty); int reverse = tyrevfunc(s.Stype.Tty);
assert(fd.type.ty == Tfunction); assert(fd.type.ty == Tfunction);
TypeFunction tf = cast(TypeFunction)fd.type; TypeFunction tf = cast(TypeFunction)fd.type;
RET retmethod = retStyle(tf, fd.needThis()); RET retmethod = retStyle(tf, fd.needThis());
if (retmethod == RET.stack) if (retmethod == RET.stack)
{ {
// If function returns a struct, put a pointer to that // If function returns a struct, put a pointer to that
// as the first argument // as the first argument
.type *thidden = Type_toCtype(tf.next.pointerTo()); .type *thidden = Type_toCtype(tf.next.pointerTo());
char[5+4+1] hiddenparam = void; char[5 + 10 + 1] hiddenparam = void;
__gshared int hiddenparami; // how many we've generated so far __gshared uint hiddenparami; // how many we've generated so far
const(char)* name; const(char)* name;
if (fd.nrvo_can && fd.nrvo_var) if (fd.nrvo_can && fd.nrvo_var)
name = fd.nrvo_var.ident.toChars(); name = fd.nrvo_var.ident.toChars();
else else
{ {
sprintf(hiddenparam.ptr, "__HID%d", ++hiddenparami); sprintf(hiddenparam.ptr, "__HID%u", ++hiddenparami);
name = hiddenparam.ptr; name = hiddenparam.ptr;
} }
shidden = symbol_name(name, SCparameter, thidden); shidden = symbol_name(name, SCparameter, thidden);
shidden.Sflags |= SFLtrue | SFLfree; shidden.Sflags |= SFLtrue | SFLfree;
if (fd.nrvo_can && fd.nrvo_var && fd.nrvo_var.nestedrefs.dim) if (fd.nrvo_can && fd.nrvo_var && fd.nrvo_var.nestedrefs.dim)
type_setcv(&shidden.Stype, shidden.Stype.Tty | mTYvolatile); type_setcv(&shidden.Stype, shidden.Stype.Tty | mTYvolatile);
irs.shidden = shidden; irs.shidden = shidden;
fd.shidden = shidden; fd.shidden = shidden;
} }
else else
 End of changes. 2 change blocks. 
3 lines changed or deleted 3 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)