mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-03-01 10:03:30 +01:00
Fixed .funcptr property of delegates, no longer uses the infamous DMD rewrites to pointer arithmetic, instead a GEPExp has been introduced.
This commit is contained in:
@@ -9071,4 +9071,30 @@ void CondExp::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
|
||||
expToCBuffer(buf, hgs, e2, PREC_cond);
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
|
||||
#if IN_LLVM
|
||||
|
||||
// Strictly LLVMDC specific stuff
|
||||
|
||||
GEPExp::GEPExp(Loc loc, Expression* e, Identifier* id, unsigned idx)
|
||||
: UnaExp(loc, TOKgep, sizeof(GEPExp), e)
|
||||
{
|
||||
index = idx;
|
||||
ident = id;
|
||||
}
|
||||
|
||||
void GEPExp::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
|
||||
{
|
||||
expToCBuffer(buf, hgs, e1, PREC_primary);
|
||||
buf->writeByte('.');
|
||||
buf->writestring(ident->toChars());
|
||||
}
|
||||
|
||||
Expression* GEPExp::toLvalue(Scope* sc, Expression* e)
|
||||
{
|
||||
// GEP's are always lvalues, at least in the "LLVM sense" ...
|
||||
return this;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user