[PATCH] Generate warning when explicitly specified vectorization fails
Arnold
aschwaighofer at apple.com
Fri Jul 11 12:26:40 PDT 2014
LLVM patch lgtm.
Thanks Tyler.
> On Jul 9, 2014, at 7:40 PM, Tyler Nowicki <tnowicki at apple.com> wrote:
>
> If these pragmas are silently ignored when then they don’t have much value. A big part of their value come from the confirmation that they are working. The warning will only be generated on loops with #pragma clang loop vectorize/interleave/unroll specified. It can also be silenced using the command line option -Wno-optimization-warning.
>
> I’m still looking into the clang in 32-bit mode question posed earlier. Are there any other comments on the patches?
>
> Thanks,
>
> Tyler
>
>> On Jul 7, 2014, at 10:45 AM, Mark Heffernan <meheff at google.com> wrote:
>>
>>> On Thu, Jul 3, 2014 at 9:23 AM, Diego Novillo <dnovillo at google.com> wrote:
>>> This change is raising the severity of this diagnostic. Do we really want to cause build failures in this situation when the code is built with -Werror?
>>>
>>> I think I would be fine with it, if this diagnostic was only triggered when the user specified a #pragma, but if the failure is in the vectorizer, with no hints from the user, then I think a warning is too strong. Even when using #pragma, I'm not sure I'd like a warning here.
>>
>> I'd put my vote in for having a warning if a #pragma optimization directive could not be followed. This assumes the warning is instructive enough that the user can easily fix the issue. I added support for loop unrolling pragmas (following Tyler's vectorization work) so the focus for us is loop unrolling. For the target we care about (CUDA/GPU) a missed loop unroll can be a massive performance loss and the user should know about it. Whatever is decided, I'll make the diagnostic severity of loop unrolling pragma diagnostics match that of the vectorization ones.
>>
>> Mark
>>
>>>
>>>> return false;
>>>> }
>>>>
>>>> @@ -1276,8 +1292,7 @@
>>>> emitOptimizationRemarkAnalysis(
>>>> F->getContext(), DEBUG_TYPE, *F, L->getStartLoc(),
>>>> "loop not vectorized due to NoImplicitFloat attribute");
>>>> - emitOptimizationRemarkMissed(F->getContext(), DEBUG_TYPE, *F,
>>>> - L->getStartLoc(), Hints.emitRemark());
>>>> + emitMissedWarning(F, L, Hints);
>>>
>>> Likewise.
>>>
>>>
>>> Diego.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140711/73711047/attachment.html>
More information about the cfe-commits
mailing list