Hi,

I’ve been working on the vectorization diagnostics a little more. The first 
patch makes sure the analysis diagnostics are printed unless a disabling hint 
is provided. And the two pairs of LLVM and Clang patches make the diagnostic 
messages easier to understand and extend the vectorize(enable) hint to override 
the mem-pointer check threshold.

The new diagnostics are:

remark: loop not vectorized: cannot prove it is safe to reorder floating-point 
operations; allow reordering by specifying '#pragma clang loop 
vectorize(enable)' before the loop or by providing the compiler option 
'-ffast-math’.

and

remark: loop not vectorized: cannot prove it is safe to reorder memory 
operations; allow reordering by specifying '#pragma clang loop 
vectorize(enable)' before the loop. If the arrays will always be independent 
specify '#pragma clang loop vectorize(assume_safety)' before the loop or 
provide the '__restrict__' qualifier with the independent array arguments. 
Erroneous results will occur if these options are incorrectly applied!

Using 'vectorize(enable)' to reorder memory operations is always safe (but not 
for fp ops), where as using 'vectorize(assume_safety)' might be dangerous. I 
removed the references to the mem-check threshold because I realized only 
compiler developers would know what it means.

Feedback is appreciated!

Tyler

Attachment: LLVM-1-LoopVectorizeHints-produces-the-appropriate-pass-name.patch
Description: Binary data

Attachment: LLVM-2-Modify-diagnostics-to-use-reordering-concept.patch
Description: Binary data

Attachment: Clang-2-Modify-diagnostics-to-use-reordering-concept.patch
Description: Binary data

Attachment: LLVM-3-Allow-hint-to-override-memcheck-threshold.patch
Description: Binary data

Attachment: Clang-3-Allow-hint-to-override-memcheck-threshold.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to