On Monday, October 14, 2013 6:16 PM, David Blaikie wrote:
Generally I believe we would prefer to disable the warning than needlessly initialize the variable (is this needless initialization? I haven't looked at the rest of the code, but I assume it is). That way dynamic tools (MSan, Valgrind, etc) can properly diagnose when the algorithm has bugs that fail to initialize this variable.
And on Monday, October 14, 2013 6:33 PM, Robert Lytton wrote:
Hi David, Just to confirm that the initialization was needless. All enum types are covered in switch statement. Each case assigns to the variable.
Yes, each case assigns to the variable (even the one with the llvm_unreachable), but gcc seems to be over-zealous with this warning and doesn't consider the switch statement to be fully covered. I think it happens under some specific optimisation level, but I don't know the ins and outs of it, this is just the impression I've gathered over time. David, what would be the best best way to disable the warning here? I take your point about using dynamic tools, but the code in its current state will not compile under release mode with -Werror on gcc. I wouldn't want to do some sort of kluge in the order of a diagnostic pragma; would you be happy with an alternative kludge: a LLVM_WEAK_INITIALIZE(...) macro inside llvm/Compiler.h that expands to nothing unless using gcc? I guess there are loads of places across the whole code where this might be used; I don't think this is an isolated case of a technically unnecessary initialisation. Cheers Andy _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
