]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ir.c
Applying the actual 'Fix FTFBS stuff' part
[xonotic/gmqcc.git] / ir.c
diff --git a/ir.c b/ir.c
index 411fcdc55377c8cf3d8277e123355224920fe0b4..ee3ea2381361c72c1b6a5828242f845660244768 100644 (file)
--- a/ir.c
+++ b/ir.c
@@ -1525,6 +1525,10 @@ ir_instr* ir_block_create_phi(ir_block *self, lex_ctx ctx, const char *label, in
 {
     ir_value *out;
     ir_instr *in;
+    if (self->final) {
+        irerror(self->context, "unreachable statement (%s)", self->label);
+        return false;
+    }
     in = ir_instr_new(ctx, self, VINSTR_PHI);
     if (!in)
         return NULL;
@@ -1570,9 +1574,17 @@ ir_instr* ir_block_create_call(ir_block *self, lex_ctx ctx, const char *label, i
 {
     ir_value *out;
     ir_instr *in;
+    if (self->final) {
+        irerror(self->context, "unreachable statement (%s)", self->label);
+        return false;
+    }
     in = ir_instr_new(ctx, self, (noreturn ? VINSTR_NRCALL : INSTR_CALL0));
     if (!in)
         return NULL;
+    if (noreturn) {
+        self->final = true;
+        self->is_return = true;
+    }
     out = ir_value_out(self->owner, label, (func->outtype == TYPE_VOID) ? store_return : store_value, func->outtype);
     if (!out) {
         ir_instr_delete(in);
@@ -3530,7 +3542,7 @@ bool ir_builder_generate(ir_builder *self, const char *filename)
 
 #define IND_BUFSZ 1024
 
-#ifdef WIN32
+#ifdef _MSC_VER
 # define strncat(dst, src, sz) strncat_s(dst, sz, src, _TRUNCATE)
 #endif