aboutsummaryrefslogtreecommitdiff
path: root/src/all_types.hpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-02-21 10:07:11 -0500
committerAndrew Kelley <andrew@ziglang.org>2019-02-21 10:07:11 -0500
commit2bb795dc455823e76ef3e0c9b3fcee6bcb15fddb (patch)
tree995e0a82e2d47d0b6701716372808ae7a40a406f /src/all_types.hpp
parentdb31c2524df4352593128aaceaa0b085ef8bb674 (diff)
downloadzig-2bb795dc455823e76ef3e0c9b3fcee6bcb15fddb.tar.gz
zig-2bb795dc455823e76ef3e0c9b3fcee6bcb15fddb.zip
`@sliceToBytes` works at comptime
closes #262
Diffstat (limited to 'src/all_types.hpp')
-rw-r--r--src/all_types.hpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/all_types.hpp b/src/all_types.hpp
index 2a359fa49b..0ee0fef2ca 100644
--- a/src/all_types.hpp
+++ b/src/all_types.hpp
@@ -630,19 +630,6 @@ struct AstNodeUnwrapOptional {
AstNode *expr;
};
-enum CastOp {
- CastOpNoCast, // signifies the function call expression is not a cast
- CastOpNoop, // fn call expr is a cast, but does nothing
- CastOpIntToFloat,
- CastOpFloatToInt,
- CastOpBoolToInt,
- CastOpResizeSlice,
- CastOpNumLitToConcrete,
- CastOpErrSet,
- CastOpBitCast,
- CastOpPtrOfArrayToSlice,
-};
-
struct AstNodeFnCallExpr {
AstNode *fn_ref_expr;
ZigList<AstNode *> params;
@@ -2142,6 +2129,7 @@ enum IrInstructionId {
IrInstructionIdConst,
IrInstructionIdReturn,
IrInstructionIdCast,
+ IrInstructionIdResizeSlice,
IrInstructionIdContainerInitList,
IrInstructionIdContainerInitFields,
IrInstructionIdStructInit,
@@ -2503,6 +2491,18 @@ struct IrInstructionReturn {
IrInstruction *value;
};
+enum CastOp {
+ CastOpNoCast, // signifies the function call expression is not a cast
+ CastOpNoop, // fn call expr is a cast, but does nothing
+ CastOpIntToFloat,
+ CastOpFloatToInt,
+ CastOpBoolToInt,
+ CastOpNumLitToConcrete,
+ CastOpErrSet,
+ CastOpBitCast,
+ CastOpPtrOfArrayToSlice,
+};
+
// TODO get rid of this instruction, replace with instructions for each op code
struct IrInstructionCast {
IrInstruction base;
@@ -2513,6 +2513,13 @@ struct IrInstructionCast {
LLVMValueRef tmp_ptr;
};
+struct IrInstructionResizeSlice {
+ IrInstruction base;
+
+ IrInstruction *operand;
+ LLVMValueRef tmp_ptr;
+};
+
struct IrInstructionContainerInitList {
IrInstruction base;