From: Wolfgang Bumiller Date: Sun, 1 Feb 2015 11:13:59 +0000 (+0100) Subject: Merge branch 'cleanup' of git://github.com/graphitemaster/gmqcc into cleanup X-Git-Tag: xonotic-v0.8.2~9 X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=commitdiff_plain;h=fab640da4cc5ac00ae69d37c227dedca327b61f1;hp=fd0cc40b9c026d09fe17c07ac6723311ea98a1c9 Merge branch 'cleanup' of git://github.com/graphitemaster/gmqcc into cleanup --- diff --git a/fold.cpp b/fold.cpp index 658ec38..f5a1b31 100644 --- a/fold.cpp +++ b/fold.cpp @@ -1338,11 +1338,15 @@ ast_expression *fold::op_cmp(ast_value *a, ast_value *b, bool ne) { float la = immvalue_float(a); float lb = immvalue_float(b); check_inexact_float(a, b); - return (ast_expression*)m_imm_float[!(ne ? la == lb : la != lb)]; - } if (isvector(a) && isvector(b)) { + return (ast_expression*)m_imm_float[ne ? la != lb : la == lb]; + } else if (isvector(a) && isvector(b)) { vec3_t la = immvalue_vector(a); vec3_t lb = immvalue_vector(b); - return (ast_expression*)m_imm_float[!(ne ? vec3_cmp(la, lb) : !vec3_cmp(la, lb))]; + bool compare = vec3_cmp(la, lb); + return (ast_expression*)m_imm_float[ne ? !compare : compare]; + } else if (isstring(a) && isstring(b)) { + bool compare = !strcmp(immvalue_string(a), immvalue_string(b)); + return (ast_expression*)m_imm_float[ne ? !compare : compare]; } } return nullptr; diff --git a/ir.cpp b/ir.cpp index 044b834..d11bbb7 100644 --- a/ir.cpp +++ b/ir.cpp @@ -3436,6 +3436,8 @@ static bool ir_builder_gen_global(ir_builder *self, ir_value *global, bool isloc { ir_value_code_setaddr(global, self->m_code->globals.size()); if (global->m_hasvalue) { + if (global->m_cvq == CV_CONST && global->m_reads.empty()) + return true; iptr = (int32_t*)&global->m_constval.ivec[0]; self->m_code->globals.push_back(*iptr); } else { @@ -3451,6 +3453,8 @@ static bool ir_builder_gen_global(ir_builder *self, ir_value *global, bool isloc { ir_value_code_setaddr(global, self->m_code->globals.size()); if (global->m_hasvalue) { + if (global->m_cvq == CV_CONST && global->m_reads.empty()) + return true; uint32_t load = code_genstring(self->m_code.get(), global->m_constval.vstring); self->m_code->globals.push_back(load); } else {