spatel added inline comments.
================ Comment at: lib/CodeGen/CGBuiltin.cpp:10107-10112 + case 0x0b: // FALSE_OQ + case 0x1b: // FALSE_OS + return llvm::Constant::getNullValue(ConvertType(E->getType())); + case 0x0f: // TRUE_UQ + case 0x1f: // TRUE_US + return llvm::Constant::getAllOnesValue(ConvertType(E->getType())); ---------------- GBuella wrote: > spatel wrote: > > On 2nd thought, why are we optimizing when we have matching IR predicates > > for these? > > Just translate to FCMP_TRUE / FCMP_FALSE instead of special-casing these > > values. > > InstSimplify can handle the constant folding if optimization is on. > I don't know, these TRUE/FALSE cases were already handled here, I only > rearranged the code. > Does this cause any problems? I mean, if it meant an extra dozen lines of > code I would get it, but as it is, does it hurt anything? It's mostly about being consistent. I think it's generally out-of-bounds for clang to optimize code. That's not its job. The potential end user difference is that in unoptimized code, a user might expect to see the vcmpXX asm corresponding to the source-level intrinsic when debugging. I agree that this is changing existing behavior, so it's better if we make this change before or after this patch. https://reviews.llvm.org/D45616 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits