aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-08-06 18:15:11 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-08-06 18:15:11 -0400
commitd83e4092bfee7bfdb59d1522289aa0bc7df407e4 (patch)
treebbfd8e765bbd7130c22245095f18d8a4f8414951 /src/analyze.cpp
parenta0a57beed53a08346a3b6e0d739ee221f151ceca (diff)
downloadzig-d83e4092bfee7bfdb59d1522289aa0bc7df407e4.tar.gz
zig-d83e4092bfee7bfdb59d1522289aa0bc7df407e4.zip
fix constant debug info when number literal is 0
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index 6ad5af782b..8418dbdcd1 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -813,8 +813,19 @@ static const char *calling_convention_name(CallingConvention cc) {
case CallingConventionCold: return "coldcc";
case CallingConventionNaked: return "nakedcc";
case CallingConventionStdcall: return "stdcallcc";
- default: zig_unreachable();
}
+ zig_unreachable();
+}
+
+static const char *calling_convention_fn_type_str(CallingConvention cc) {
+ switch (cc) {
+ case CallingConventionUnspecified: return "";
+ case CallingConventionC: return "extern ";
+ case CallingConventionCold: return "coldcc ";
+ case CallingConventionNaked: return "nakedcc ";
+ case CallingConventionStdcall: return "stdcallcc ";
+ }
+ zig_unreachable();
}
TypeTableEntry *get_fn_type(CodeGen *g, FnTypeId *fn_type_id) {
@@ -832,24 +843,7 @@ TypeTableEntry *get_fn_type(CodeGen *g, FnTypeId *fn_type_id) {
// populate the name of the type
buf_resize(&fn_type->name, 0);
- const char *cc_str;
- switch (fn_type->data.fn.fn_type_id.cc) {
- case CallingConventionUnspecified:
- cc_str = "";
- break;
- case CallingConventionC:
- cc_str = "extern ";
- break;
- case CallingConventionCold:
- cc_str = "coldcc ";
- break;
- case CallingConventionNaked:
- cc_str = "nakedcc ";
- break;
- case CallingConventionStdcall:
- cc_str = "stdcallcc ";
- break;
- }
+ const char *cc_str = calling_convention_fn_type_str(fn_type->data.fn.fn_type_id.cc);
buf_appendf(&fn_type->name, "%sfn(", cc_str);
for (size_t i = 0; i < fn_type_id->param_count; i += 1) {
FnTypeParamInfo *param_info = &fn_type_id->param_info[i];
@@ -4145,6 +4139,8 @@ void render_const_value(CodeGen *g, Buf *buf, ConstExprValue *const_val) {
}
TypeTableEntry *make_int_type(CodeGen *g, bool is_signed, uint32_t size_in_bits) {
+ assert(size_in_bits > 0);
+
TypeTableEntry *entry = new_type_table_entry(TypeTableEntryIdInt);
entry->is_copyable = true;
entry->type_ref = LLVMIntType(size_in_bits);