On Fri, Aug 4, 2017 at 12:06 PM, Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> wrote: > Conditional expressions whose second & third operands > have non-compatible types are not conform to the C standard > and sparse emit a warning for them and return the expression > as being erroneous. In consequence, such expressions are not > given a type. This, in turn, makes that some further processing > cannot be done (correctly). > > It seems that neither GCC nor clang emit a warning when > there is a type mismatch but the condition is a constant. > > In the case we're interested here (the slow compilation of a file) > the operation that cannot be done is the expansion its operands. > This, in turn and among other things, makes that builtins like > __builtin_constant_p() are not evaluated with disatrous consequence > for the amount of work done in the next phases. > > Fix this by giving to conditional expressions with constant > condition the same type as the operand selected by the conditional > (but keeping the warning) as GCC & clang seems to do. Looks good to me. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html