| Index: crypto/p224.cc
|
| diff --git a/crypto/p224.cc b/crypto/p224.cc
|
| index 5f76fbc259be1f3477c91a03fdcf6514eae53959..74ad7e00c4719dedaffec747361e8d69c1f80882 100644
|
| --- a/crypto/p224.cc
|
| +++ b/crypto/p224.cc
|
| @@ -123,6 +123,15 @@ typedef uint64 LargeFieldElement[15];
|
| // ReduceLarge converts a LargeFieldElement to a FieldElement.
|
| //
|
| // in[i] < 2**62
|
| +
|
| +// GCC 4.9 incorrectly vectorizes the first coefficient elimination loop, so
|
| +// disable that optimization via pragma. Don't use the pragma under Clang, since
|
| +// clang doesn't understand it.
|
| +// TODO(wez): Remove this when crbug.com/439566 is fixed.
|
| +#if defined(__GNUC__) && !defined(__clang__)
|
| +#pragma GCC optimize("no-tree-vectorize")
|
| +#endif
|
| +
|
| void ReduceLarge(FieldElement* out, LargeFieldElement* inptr) {
|
| LargeFieldElement& in(*inptr);
|
|
|
| @@ -164,6 +173,11 @@ void ReduceLarge(FieldElement* out, LargeFieldElement* inptr) {
|
| // out[5..7] < 2**28
|
| }
|
|
|
| +// TODO(wez): Remove this when crbug.com/439566 is fixed.
|
| +#if defined(__GNUC__) && !defined(__clang__)
|
| +#pragma GCC optimize("tree-vectorize")
|
| +#endif
|
| +
|
| // Mul computes *out = a*b
|
| //
|
| // a[i] < 2**29, b[i] < 2**30 (or vice versa)
|
|
|