https://issues.dlang.org/show_bug.cgi?id=21474
mhh <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #3 from mhh <[email protected]> --- (In reply to ponce from comment #1) > Found this bug another time in another incarnation. > > Build with dmd -O for reproducing. > > > --------- test4.d ------------- > > import core.simd; > > int4 cmpss_repro(float4 a) > { > int4 result; > result.ptr[0] = (1 > a.array[0]) ? -1 : 0; > return result; > } > > ------------------------------- This particular example yields the output --- findreg(0, line=751, file='src/dmd/backend/cod4.d', function = '_D5dtest11cmpss_reproFNhG4fZNhG4i') dmd: src/dmd/backend/cgcod.d:1864: Assertion `0' failed. --- The function in question: ------------------- reg_t findreg(regm_t regm, int line, const(char)* file) { debug regm_t regmsave = regm; reg_t i = 0; while (1) { if (!(regm & 0xF)) { regm >>= 4; i += 4; if (!regm) break; } if (regm & 1) return i; regm >>= 1; i++; } debug printf("findreg(%s, line=%d, file='%s', function = '%s')\n",regm_str(regmsave),line,file,funcsym_p.Sident.ptr); fflush(stdout); // *(char*)0=0; assert(0); } ------------------- On the assumption that dmd builds are distributed after being compiled with ldc, ldc (possibly dmd as well) will optimise an assert(0) to a x86 ud2 instruction. --
