Commit 04a32443 by Jakub Jelinek Committed by Jakub Jelinek

re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with…

re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with -fsanitize=undefined and vector types)

	PR sanitizer/77823
	* c-ubsan.c (ubsan_instrument_shift): Return NULL_TREE if type0
	is not integral.

	* c-c++-common/ubsan/shift-9.c: New test.

From-SVN: r240796
parent 743a9cf7
2016-10-05 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/77823
* c-ubsan.c (ubsan_instrument_shift): Return NULL_TREE if type0
is not integral.
* c-common.c (c_common_reswords): Update comment for C++11.
2016-10-04 Jason Merrill <jason@redhat.com>
......
......@@ -114,6 +114,9 @@ ubsan_instrument_shift (location_t loc, enum tree_code code,
tree t, tt = NULL_TREE;
tree type0 = TREE_TYPE (op0);
tree type1 = TREE_TYPE (op1);
if (!INTEGRAL_TYPE_P (type0))
return NULL_TREE;
tree op1_utype = unsigned_type_for (type1);
HOST_WIDE_INT op0_prec = TYPE_PRECISION (type0);
tree uprecm1 = build_int_cst (op1_utype, op0_prec - 1);
......@@ -126,8 +129,7 @@ ubsan_instrument_shift (location_t loc, enum tree_code code,
/* If this is not a signed operation, don't perform overflow checks.
Also punt on bit-fields. */
if (!INTEGRAL_TYPE_P (type0)
|| TYPE_OVERFLOW_WRAPS (type0)
if (TYPE_OVERFLOW_WRAPS (type0)
|| GET_MODE_BITSIZE (TYPE_MODE (type0)) != TYPE_PRECISION (type0))
;
......
2016-10-05 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/77823
* c-c++-common/ubsan/shift-9.c: New test.
2016-10-05 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
* gcc.dg/torture/pr69941.c: Use __INT32_TYPE__ instead
......
/* PR sanitizer/77823 */
/* { dg-do compile { target int128 } } */
/* { dg-options "-fsanitize=undefined -Wno-psabi -w" } */
typedef unsigned V __attribute__((vector_size(32)));
typedef unsigned __int128 W __attribute__((vector_size(32)));
V
foo (V v)
{
return v << 30;
}
V
bar (V v, V w)
{
return v << w;
}
W
baz (W v)
{
return v << 30;
}
W
boo (W v, W w)
{
return v << w;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment