Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade to D v2.079.1 #2587

Merged
merged 78 commits into from
Apr 22, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
df4f854
Upgrade to D v2.079.0-beta.1
kinke Feb 20, 2018
fabdc55
druntime: Tiny fix for ldc.eh_msvc
kinke Feb 20, 2018
30f7fab
AppVeyor: Upgrade host compiler to v1.8.0-beta1
kinke Feb 20, 2018
758ca55
dmd.declaration: Fix invalid override (additional const)
kinke Feb 20, 2018
7bfb72b
dmd.dsymbol: Fix overrides (missing `Loc` => `const Loc &`)
kinke Feb 20, 2018
b8909f4
Fix more front-end C++ header regressions (by-ref `Loc`)
kinke Feb 20, 2018
050d9e9
And some more C++ header fixes
kinke Feb 20, 2018
c7c681d
Another C++ header fix wrt. FuncDeclaration vtable
kinke Feb 21, 2018
3d59944
druntime: Proper fix for ldc.eh_msvc
kinke Feb 21, 2018
926ae1e
Adapt tests/semantic/dcompute.d to new backticks in error msg
kinke Feb 21, 2018
15a3c60
CMake: Add -d-version=StdUnittest for Phobos unittests
kinke Feb 23, 2018
ccf14b7
CMake: Only include new DragonFly BSD druntime modules when appropriate
kinke Feb 23, 2018
a9b0184
Disable druntime standalone test 'uuid'
kinke Feb 24, 2018
4d198d1
Remove lit-test tests/codegen/enum_vardecl.d
kinke Feb 24, 2018
0112e20
Adapt lit-test tests/codegen/betterC_typeinfo.d
kinke Feb 24, 2018
17d9125
Fix lit-test tests/codegen/attr_llvmFMF.d
kinke Feb 24, 2018
92f2a27
Phobos: Minimally relax std.complex unittest for 64-bit reals
kinke Feb 24, 2018
0944965
Adapt CI scripts to memory-hungry Phobos unittest modules
kinke Feb 24, 2018
aa34136
dmd-testsuite: Remove superfluous -i build flag for sanitize_json tool
kinke Feb 24, 2018
97514dd
Fix betterC regression for struct TypeInfos
kinke Feb 25, 2018
1b8a3b9
Adapt to frontend injecting implicit 'return 0' for betterC main
kinke Feb 25, 2018
1251272
Upgrade to D v2.079.0-beta.2
kinke Feb 25, 2018
6eceb91
Merge branch 'master' into merge-2.079
kinke Feb 25, 2018
13044c6
Adapt lit-test codegen/gh1955.d to changed critical section mangling
kinke Feb 25, 2018
5608825
Merge branch 'master' into merge-2.079
kinke Feb 25, 2018
112b916
Adapt lit-test PGO/hash.d to now fatal warnings with `-w`
kinke Feb 26, 2018
36d9dcd
Fix Travis script
kinke Feb 27, 2018
3b7ed6c
Upgrade to D v2.079.0
kinke Mar 4, 2018
49f4200
Implement cmdline option -i[=<pattern>] (include imports)
kinke Mar 29, 2018
b144fe1
Merge branch 'master' into merge-2.079
kinke Mar 29, 2018
3d0f5c2
Implement (undocumented) cmdline option -Xi=<JSON field name>
kinke Mar 29, 2018
66935c1
dmd-testsuite: Disable some new tests not suited for LDC
kinke Mar 30, 2018
426555f
Make user-provided import paths dominate the default ones
kinke Mar 30, 2018
32b7637
Include config file path in JSON output
kinke Mar 30, 2018
2ffd6ba
Error out when trying to concatenate arrays in -betterC mode
kinke Mar 30, 2018
4b46f8a
dmd-testsuite: Disable compilable/testclidflags.sh (no DFLAGS output …
kinke Mar 31, 2018
3ff47b8
Support special case of `-Xi=...` requiring no source file
kinke Mar 31, 2018
a248b75
Fix ConfigFile::path() for good
kinke Mar 31, 2018
3b16f0e
Remove superfluous dmd/frontend.d
kinke Mar 31, 2018
ecbc36d
Win32: Add extra underscore for mangled names of D symbols (#2598)
kinke Apr 2, 2018
5e4d04f
Call _Unwind_Resume() directly (except for ARM EABI) (#2642)
kinke Apr 4, 2018
081b681
Forward-declare runtime functions lazily
kinke Apr 1, 2018
d8f60d2
Redirect access to object.d type declarations through gen/runtime
kinke Apr 1, 2018
bd623f0
Redirect access to remaining TypeInfo subtypes through gen/runtime
kinke Apr 1, 2018
c17b71c
Skip ModuleInfo emission if there's no ModuleInfo declaration
kinke Apr 1, 2018
a15db48
dmd-testsuite: Fix signature of _d_run_main() in runnable/extra-files…
kinke Apr 1, 2018
24c2d3e
Skip TypeInfo emission if there's no TypeInfo declaration
kinke Apr 1, 2018
b032cfd
MSVC: Use absolute path to ldc_rt.builtins.lib
kinke Apr 1, 2018
4c11547
Improve LoC propagation for error messages in gen/runtime.cpp
kinke Apr 1, 2018
9ff736b
Lookup runtime function before constructing the call args
kinke Apr 1, 2018
e337cec
Slightly refactor RTTIBuilder
kinke Apr 3, 2018
e4f424b
Merge pull request #2641 from kinke/minimal
kinke Apr 10, 2018
f38a797
Split up getOrCreateGlobal() in {declare,define}Global()
kinke Apr 7, 2018
9079e5c
MSVC: Emit EH type descriptors as COMDATs
kinke Apr 7, 2018
8d5a94c
Only emit interface vtables in the module declaring the class type
kinke Apr 7, 2018
2dea0e9
Account for special case of builtin TypeInfos (rt.typeinfo.*)
kinke Apr 7, 2018
edc928b
Merge pull request #2647 from kinke/ifaceVtbl
kinke Apr 13, 2018
db7aa1c
MSVC: Support exporting naked functions (#2651)
kinke Apr 13, 2018
a2808ec
64-bit OSX: Mangle [u]long as C++ [u]int64_t
kinke Apr 7, 2018
7426d1f
dmd-testsuite: Add interop tests for C++ long and size_t
kinke Apr 8, 2018
6b0ca0e
64-bit OSX: Revert to mangling (u)long as C++ (unsigned) long
kinke Apr 9, 2018
d983cd0
Add support for new magic structs __c_(u)longlong
kinke Apr 9, 2018
b70a908
druntime: Add aliases c(pp)_(u)longlong and c(pp)_(u)int64_t
kinke Apr 9, 2018
3103b62
dmd-testsuite: Adapt & extend runnable/externmangle.d
kinke Apr 9, 2018
bb6e138
dmd-testsuite: Adapt runnable/extra-files/cppb.cpp to reverted OSX ma…
kinke Apr 9, 2018
7f6b7b9
Fix C long size for 64-bit MSVC target
kinke Apr 9, 2018
5ac6c85
Predefine version D_ObjectiveC _before_ printing predefs with -v
kinke Apr 10, 2018
1d775af
Merge pull request #2650 from kinke/osx64_mangling
kinke Apr 15, 2018
0bc068f
Upgrade to D v2.079.1
kinke Apr 15, 2018
025c69c
Merge branch 'master' into merge-2.079
kinke Apr 15, 2018
ddf0031
CircleCI: Disable another test on macOS due to unexpected linker warning
kinke Apr 15, 2018
4356f70
Phobos: Fix Android regression in std.datetime.timezone
kinke Apr 21, 2018
fb7fd86
Merge branch 'master' into merge-2.079
kinke Apr 21, 2018
2b17fab
druntime: Fix another assembly warning for MIPS32
kinke Apr 21, 2018
4509340
Merge branch 'master' into merge-2.079
kinke Apr 21, 2018
571dc9a
Upgrade dub to v1.8.1
kinke Apr 21, 2018
8c55682
Travis: Allow Linux BUILD_SHARED_LIBS=ON failures for now
kinke Apr 21, 2018
6812e0b
Merge branch 'master' into merge-2.079
kinke Apr 22, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
And some more C++ header fixes
  • Loading branch information
kinke committed Feb 20, 2018
commit 050d9e9208e21226a16044875149f7f87e54f687
2 changes: 1 addition & 1 deletion dmd/aggregate.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ class StructDeclaration : public AggregateDeclaration
Dsymbol *search(const Loc &, Identifier *ident, int flags = SearchLocalsOnly);
const char *kind() const;
void finalizeSize();
bool fit(Loc loc, Scope *sc, Expressions *elements, Type *stype);
bool fit(const Loc &loc, Scope *sc, Expressions *elements, Type *stype);
bool isPOD();

StructDeclaration *isStructDeclaration() { return this; }
Expand Down
2 changes: 1 addition & 1 deletion dmd/attrib.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class AlignDeclaration : public AttribDeclaration
Expression *ealign;
structalign_t salign;

AlignDeclaration(Loc loc, Expression *ealign, Dsymbols *decl);
AlignDeclaration(const Loc &loc, Expression *ealign, Dsymbols *decl);
Dsymbol *syntaxCopy(Dsymbol *s);
Scope *newScope(Scope *sc);
void accept(Visitor *v) { v->visit(this); }
Expand Down
28 changes: 14 additions & 14 deletions dmd/ctfe.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,11 @@ Expression *resolveSlice(Expression *e);
uinteger_t resolveArrayLength(Expression *e);

/// Create an array literal consisting of 'elem' duplicated 'dim' times.
ArrayLiteralExp *createBlockDuplicatedArrayLiteral(Loc loc, Type *type,
ArrayLiteralExp *createBlockDuplicatedArrayLiteral(const Loc &loc, Type *type,
Expression *elem, size_t dim);

/// Create a string literal consisting of 'value' duplicated 'dim' times.
StringExp *createBlockDuplicatedStringLiteral(Loc loc, Type *type,
StringExp *createBlockDuplicatedStringLiteral(const Loc &loc, Type *type,
unsigned value, size_t dim, unsigned char sz);


Expand All @@ -158,13 +158,13 @@ void assignInPlace(Expression *dest, Expression *src);
Expression * modifyStructField(Type *type, StructLiteralExp *se, size_t offset, Expression *newval);

/// Given an AA literal aae, set arr[index] = newval and return the new array.
Expression *assignAssocArrayElement(Loc loc, AssocArrayLiteralExp *aae,
Expression *assignAssocArrayElement(const Loc &loc, AssocArrayLiteralExp *aae,
Expression *index, Expression *newval);

/// Given array literal oldval of type ArrayLiteralExp or StringExp, of length
/// oldlen, change its length to newlen. If the newlen is longer than oldlen,
/// all new elements will be set to the default initializer for the element type.
UnionExp changeArrayLiteralLength(Loc loc, TypeArray *arrayType,
UnionExp changeArrayLiteralLength(const Loc &loc, TypeArray *arrayType,
Expression *oldval, size_t oldlen, size_t newlen);


Expand All @@ -188,15 +188,15 @@ Expression *getAggregateFromPointer(Expression *e, dinteger_t *ofs);
bool pointToSameMemoryBlock(Expression *agg1, Expression *agg2);

// return e1 - e2 as an integer, or error if not possible
UnionExp pointerDifference(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp pointerDifference(const Loc &loc, Type *type, Expression *e1, Expression *e2);

/// Return 1 if true, 0 if false
/// -1 if comparison is illegal because they point to non-comparable memory blocks
int comparePointers(Loc loc, TOK op, Type *type, Expression *agg1, dinteger_t ofs1, Expression *agg2, dinteger_t ofs2);
int comparePointers(const Loc &loc, TOK op, Type *type, Expression *agg1, dinteger_t ofs1, Expression *agg2, dinteger_t ofs2);

// Return eptr op e2, where eptr is a pointer, e2 is an integer,
// and op is TOKadd or TOKmin
UnionExp pointerArithmetic(Loc loc, TOK op, Type *type,
UnionExp pointerArithmetic(const Loc &loc, TOK op, Type *type,
Expression *eptr, Expression *e2);

// True if conversion from type 'from' to 'to' involves a reinterpret_cast
Expand All @@ -216,7 +216,7 @@ TypeAArray *toBuiltinAAType(Type *t);
* Return ae[e2] if present, or NULL if not found.
* Return TOKcantexp on error.
*/
Expression *findKeyInAA(Loc loc, AssocArrayLiteralExp *ae, Expression *e2);
Expression *findKeyInAA(const Loc &loc, AssocArrayLiteralExp *ae, Expression *e2);

/// True if type is TypeInfo_Class
bool isTypeInfo_Class(Type *type);
Expand All @@ -231,10 +231,10 @@ bool isTypeInfo_Class(Type *type);
bool isCtfeComparable(Expression *e);

/// Evaluate ==, !=. Resolves slices before comparing. Returns 0 or 1
int ctfeEqual(Loc loc, TOK op, Expression *e1, Expression *e2);
int ctfeEqual(const Loc &loc, TOK op, Expression *e1, Expression *e2);

/// Evaluate is, !is. Resolves slices before comparing. Returns 0 or 1
int ctfeIdentity(Loc loc, TOK op, Expression *e1, Expression *e2);
int ctfeIdentity(const Loc &loc, TOK op, Expression *e1, Expression *e2);

/// Returns rawCmp OP 0; where OP is ==, !=, <, >=, etc. Result is 0 or 1
int specificCmp(TOK op, int rawCmp);
Expand All @@ -249,17 +249,17 @@ int intSignedCmp(TOK op, sinteger_t n1, sinteger_t n2);
int realCmp(TOK op, real_t r1, real_t r2);

/// Evaluate >,<=, etc. Resolves slices before comparing. Returns 0 or 1
int ctfeCmp(Loc loc, TOK op, Expression *e1, Expression *e2);
int ctfeCmp(const Loc &loc, TOK op, Expression *e1, Expression *e2);

/// Returns e1 ~ e2. Resolves slices before concatenation.
UnionExp ctfeCat(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp ctfeCat(const Loc &loc, Type *type, Expression *e1, Expression *e2);

/// Same as for constfold.Index, except that it only works for static arrays,
/// dynamic arrays, and strings.
Expression *ctfeIndex(Loc loc, Type *type, Expression *e1, uinteger_t indx);
Expression *ctfeIndex(const Loc &loc, Type *type, Expression *e1, uinteger_t indx);

/// Cast 'e' of type 'type' to type 'to'.
Expression *ctfeCast(Loc loc, Type *type, Type *to, Expression *e);
Expression *ctfeCast(const Loc &loc, Type *type, Type *to, Expression *e);


#endif /* DMD_CTFE_H */
12 changes: 6 additions & 6 deletions dmd/declaration.h
Original file line number Diff line number Diff line change
Expand Up @@ -603,11 +603,11 @@ class FuncDeclaration : public Declaration

unsigned flags; // FUNCFLAGxxxxx

static FuncDeclaration *create(Loc loc, Loc endloc, Identifier *id, StorageClass storage_class, Type *type);
static FuncDeclaration *create(const Loc &loc, const Loc &endloc, Identifier *id, StorageClass storage_class, Type *type);
Dsymbol *syntaxCopy(Dsymbol *);
bool functionSemantic();
bool functionSemantic3();
bool checkForwardRef(Loc loc);
bool checkForwardRef(const Loc &loc);
// called from semantic3
VarDeclaration *declareThis(Scope *sc, AggregateDeclaration *ad);
bool equals(RootObject *o);
Expand All @@ -617,12 +617,12 @@ class FuncDeclaration : public Declaration
BaseClass *overrideInterface();
bool overloadInsert(Dsymbol *s);
FuncDeclaration *overloadExactMatch(Type *t);
FuncDeclaration *overloadModMatch(Loc loc, Type *tthis, bool &hasOverloads);
FuncDeclaration *overloadModMatch(const Loc &loc, Type *tthis, bool &hasOverloads);
TemplateDeclaration *findTemplateDeclRoot();
bool inUnittest();
MATCH leastAsSpecialized(FuncDeclaration *g);
LabelDsymbol *searchLabel(Identifier *ident);
int getLevel(Loc loc, Scope *sc, FuncDeclaration *fd); // lexical nesting level difference
int getLevel(const Loc &loc, Scope *sc, FuncDeclaration *fd); // lexical nesting level difference
const char *toPrettyChars(bool QualifyTypes = false);
const char *toFullSignature(); // for diagnostics, e.g. 'int foo(int x, int y) pure'
bool isMain() const;
Expand All @@ -646,7 +646,7 @@ class FuncDeclaration : public Declaration
bool isNogcBypassingInference();
bool setGC();

void printGCUsage(Loc loc, const char *warn);
void printGCUsage(const Loc &loc, const char *warn);
bool isolateReturn();
bool parametersIntersect(Type *t);
virtual bool isNested();
Expand Down Expand Up @@ -683,7 +683,7 @@ class FuncDeclaration : public Declaration
void accept(Visitor *v) { v->visit(this); }
};

FuncDeclaration *resolveFuncCall(Loc loc, Scope *sc, Dsymbol *s,
FuncDeclaration *resolveFuncCall(const Loc &loc, Scope *sc, Dsymbol *s,
Objects *tiargs,
Type *tthis,
Expressions *arguments,
Expand Down
6 changes: 3 additions & 3 deletions dmd/enum.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ class EnumDeclaration : public ScopeDsymbol
Dsymbol *search(const Loc &, Identifier *ident, int flags = SearchLocalsOnly);
bool isDeprecated(); // is Dsymbol deprecated?
Prot prot();
Expression *getMaxMinValue(Loc loc, Identifier *id);
Expression *getMaxMinValue(const Loc &loc, Identifier *id);
Expression *getDefaultValue(const Loc &loc);
Type *getMemtype(Loc loc);
Type *getMemtype(const Loc &loc);

EnumDeclaration *isEnumDeclaration() { return this; }

Expand Down Expand Up @@ -88,7 +88,7 @@ class EnumMember : public VarDeclaration

Dsymbol *syntaxCopy(Dsymbol *s);
const char *kind() const;
Expression *getVarExp(Loc loc, Scope *sc);
Expression *getVarExp(const Loc &loc, Scope *sc);

EnumMember *isEnumMember() { return this; }
void accept(Visitor *v) { v->visit(this); }
Expand Down
52 changes: 26 additions & 26 deletions dmd/expression.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Expression *resolveProperties(Scope *sc, Expression *e);
Expression *resolvePropertiesOnly(Scope *sc, Expression *e1);
bool checkAccess(Loc loc, Scope *sc, Expression *e, Declaration *d);
bool checkAccess(Loc loc, Scope *sc, Package *p);
Expression *build_overload(Loc loc, Scope *sc, Expression *ethis, Expression *earg, Dsymbol *d);
Expression *build_overload(const Loc &loc, Scope *sc, Expression *ethis, Expression *earg, Dsymbol *d);
Dsymbol *search_function(ScopeDsymbol *ad, Identifier *funcid);
void expandTuples(Expressions *exps);
TupleDeclaration *isAliasThisTuple(Expression *e);
Expand Down Expand Up @@ -184,7 +184,7 @@ class Expression : public RootObject
{
return ::castTo(this, sc, t);
}
virtual Expression *resolveLoc(Loc loc, Scope *sc);
virtual Expression *resolveLoc(const Loc &loc, Scope *sc);
virtual bool checkType();
virtual bool checkValue();
bool checkScalar();
Expand Down Expand Up @@ -503,7 +503,7 @@ class StructLiteralExp : public Expression
};

class DotIdExp;
DotIdExp *typeDotIdExp(Loc loc, Type *type, Identifier *ident);
DotIdExp *typeDotIdExp(const Loc &loc, Type *type, Identifier *ident);

class TypeExp : public Expression
{
Expand Down Expand Up @@ -714,13 +714,13 @@ class UnaExp : public Expression

Expression *syntaxCopy();
Expression *incompatibleTypes();
Expression *resolveLoc(Loc loc, Scope *sc);
Expression *resolveLoc(const Loc &loc, Scope *sc);

void accept(Visitor *v) { v->visit(this); }
};

typedef UnionExp (*fp_t)(Loc loc, Type *, Expression *, Expression *);
typedef int (*fp2_t)(Loc loc, TOK, Expression *, Expression *);
typedef UnionExp (*fp_t)(const Loc &loc, Type *, Expression *, Expression *);
typedef int (*fp2_t)(const Loc &loc, TOK, Expression *, Expression *);

class BinExp : public Expression
{
Expand Down Expand Up @@ -1335,35 +1335,35 @@ class DefaultInitExp : public Expression
class FileInitExp : public DefaultInitExp
{
public:
Expression *resolveLoc(Loc loc, Scope *sc);
Expression *resolveLoc(const Loc &loc, Scope *sc);
void accept(Visitor *v) { v->visit(this); }
};

class LineInitExp : public DefaultInitExp
{
public:
Expression *resolveLoc(Loc loc, Scope *sc);
Expression *resolveLoc(const Loc &loc, Scope *sc);
void accept(Visitor *v) { v->visit(this); }
};

class ModuleInitExp : public DefaultInitExp
{
public:
Expression *resolveLoc(Loc loc, Scope *sc);
Expression *resolveLoc(const Loc &loc, Scope *sc);
void accept(Visitor *v) { v->visit(this); }
};

class FuncInitExp : public DefaultInitExp
{
public:
Expression *resolveLoc(Loc loc, Scope *sc);
Expression *resolveLoc(const Loc &loc, Scope *sc);
void accept(Visitor *v) { v->visit(this); }
};

class PrettyFuncInitExp : public DefaultInitExp
{
public:
Expression *resolveLoc(Loc loc, Scope *sc);
Expression *resolveLoc(const Loc &loc, Scope *sc);
void accept(Visitor *v) { v->visit(this); }
};

Expand Down Expand Up @@ -1429,24 +1429,24 @@ UnionExp Cast(Loc loc, Type *type, Type *to, Expression *e1);
UnionExp ArrayLength(Type *type, Expression *e1);
UnionExp Ptr(Type *type, Expression *e1);

UnionExp Add(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Min(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Mul(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Div(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Mod(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Pow(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Shl(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Shr(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Ushr(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp And(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Or(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Xor(Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Add(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Min(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Mul(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Div(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Mod(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Pow(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Shl(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Shr(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Ushr(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp And(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Or(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Xor(const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Index(Type *type, Expression *e1, Expression *e2);
UnionExp Cat(Type *type, Expression *e1, Expression *e2);

UnionExp Equal(TOK op, Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Cmp(TOK op, Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Identity(TOK op, Loc loc, Type *type, Expression *e1, Expression *e2);
UnionExp Equal(TOK op, const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Cmp(TOK op, const Loc &loc, Type *type, Expression *e1, Expression *e2);
UnionExp Identity(TOK op, const Loc &loc, Type *type, Expression *e1, Expression *e2);

UnionExp Slice(Type *type, Expression *e1, Expression *lwr, Expression *upr);

Expand Down
Loading