[PATCH] D24669: {Sema] Gcc compatibility of vector shift.

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 26 07:11:19 PDT 2016

aaron.ballman added a comment.

In https://reviews.llvm.org/D24669#548984, @vbyakovlcl wrote:

> Clang 3.8 balances vector shift operand erroneous using CheckVectorOperands which converts one of operand to the type of another. In https://reviews.llvm.org/D21678 it was fixed by using checkVectorShift instead. As result clang does not emit error if shift operands have different element sizes (bat gcc does).

Ah, thank you for the explanation!

Comment at: llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td:522
@@ -521,2 +521,3 @@
 def GNUZeroVariadicMacroArguments : DiagGroup<"gnu-zero-variadic-macro-arguments">;
+def GNUVecElemSize : DiagGroup<"gnu-vec-elem-size">;
 def Fallback : DiagGroup<"fallback">;
Is this the same warning flag GCC uses?

Comment at: llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td:2306
@@ -2304,1 +2305,3 @@
+  "vector operands do not have the same elements sizes (%0 and %1)">,
+  InGroup<GNUVecElemSize>, DefaultIgnore;
 def err_ext_vector_component_exceeds_length : Error<
Why is this off by default?



More information about the cfe-commits mailing list