<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 14, 2015 at 10:47 AM, Tom Stellard <span dir="ltr"><<a href="mailto:tom@stellard.net" target="_blank">tom@stellard.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">LGTM.<br></blockquote><div><br></div><div>Thanks Tom.<br><br></div><div>Moritz, I've pushed this fix.  Feel free to pull/update if you haven't already applied this (or an equivalent fix) locally.<br><br></div><div>--Aaron<br></div><div><br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>On Fri, Sep 11, 2015 at 07:31:17PM -0500, Aaron Watry via Libclc-dev wrote:<br>
> The values for the char/short/integer/long minimums were declared with<br>
> their actual values, not the definitions from the CL spec (v1.1).  As<br>
> a result, <a href="tel:%28-2147483648" value="+12147483648" target="_blank">(-2147483648</a>) was actually being treated as a long by the<br>
> compiler, not an int, which caused issues when trying to add/subtract<br>
> that value from a vector.<br>
><br>
> Update the definitions to use the values declared by the spec, and also<br>
> add explicit casts for the char/short/int minimums so that the compiler<br>
> actually treats them as shorts/chars. Without those casts, they<br>
> actually end up stored as integers, and the compiler may end up storing<br>
> the INT_MIN as a long.<br>
><br>
> The compiler can sign extend the values if it needs to convert the<br>
> char->short, short->int, or int->long<br>
><br>
> v2: Add explicit cast for INT_MIN and fix some type-o's and wrapping<br>
>     in the commit message.<br>
><br>
> Reported-by: Moritz Pflanzer <<a href="mailto:moritz.pflanzer14@imperial.ac.uk" target="_blank">moritz.pflanzer14@imperial.ac.uk</a>><br>
> CC: Moritz Pflanzer <<a href="mailto:moritz.pflanzer14@imperial.ac.uk" target="_blank">moritz.pflanzer14@imperial.ac.uk</a>><br>
> CC: Tom Stellard <<a href="mailto:thomas.stellard@amd.com" target="_blank">thomas.stellard@amd.com</a>><br>
> Signed-off-by: Aaron Watry <<a href="mailto:awatry@gmail.com" target="_blank">awatry@gmail.com</a>><br>
> ---<br>
>  generic/include/clc/integer/definitions.h | 12 ++++++------<br>
>  1 file changed, 6 insertions(+), 6 deletions(-)<br>
><br>
> diff --git a/generic/include/clc/integer/definitions.h b/generic/include/clc/integer/definitions.h<br>
> index a407974..89de232 100644<br>
> --- a/generic/include/clc/integer/definitions.h<br>
> +++ b/generic/include/clc/integer/definitions.h<br>
> @@ -1,14 +1,14 @@<br>
>  #define CHAR_BIT 8<br>
>  #define INT_MAX <a href="tel:2147483647" value="+12147483647" target="_blank">2147483647</a><br>
> -#define INT_MIN -<a href="tel:2147483648" value="+12147483648" target="_blank">2147483648</a><br>
> +#define INT_MIN ((int)<a href="tel:%28-2147483647" value="+12147483647" target="_blank">(-2147483647</a> - 1))<br>
>  #define LONG_MAX  0x7fffffffffffffffL<br>
> -#define LONG_MIN -0x8000000000000000L<br>
> +#define LONG_MIN (-0x7fffffffffffffffL - 1)<br>
> +#define CHAR_MAX SCHAR_MAX<br>
> +#define CHAR_MIN SCHAR_MIN<br>
>  #define SCHAR_MAX 127<br>
> -#define SCHAR_MIN -128<br>
> -#define CHAR_MAX 127<br>
> -#define CHAR_MIN -128<br>
> +#define SCHAR_MIN ((char)(-127 - 1))<br>
>  #define SHRT_MAX 32767<br>
> -#define SHRT_MIN -32768<br>
> +#define SHRT_MIN ((short)(-32767 - 1))<br>
>  #define UCHAR_MAX 255<br>
>  #define USHRT_MAX 65535<br>
>  #define UINT_MAX 0xffffffff<br>
> --<br>
> 2.1.4<br>
><br>
</div></div><div><div>> _______________________________________________<br>
> Libclc-dev mailing list<br>
> <a href="mailto:Libclc-dev@lists.llvm.org" target="_blank">Libclc-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev</a><br>
</div></div></blockquote></div><br></div></div>