Commit ace83db0 by Jakub Jelinek Committed by Jakub Jelinek

re PR sanitizer/88215 (UBSAN: Internal compiler error with attribute(unused))

	PR c++/88215
	* c-ubsan.c: Include langhooks.h.
	(ubsan_instrument_division): Change gcc_assert that main variants
	of op0 and op1 types are equal to gcc_checking_assert that the
	main variants are compatible types.

	* c-c++-common/ubsan/pr88215.c: New test.

From-SVN: r266546
parent fc60283c
2018-11-28 Jakub Jelinek <jakub@redhat.com>
PR c++/88215
* c-ubsan.c: Include langhooks.h.
(ubsan_instrument_division): Change gcc_assert that main variants
of op0 and op1 types are equal to gcc_checking_assert that the
main variants are compatible types.
2018-11-27 Eric Botcazou <ebotcazou@adacore.com>
* c-ada-spec.c: Include stringpool.h.
......
......@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3. If not see
#include "stringpool.h"
#include "attribs.h"
#include "asan.h"
#include "langhooks.h"
/* Instrument division by zero and INT_MIN / -1. If not instrumenting,
return NULL_TREE. */
......@@ -44,8 +45,9 @@ ubsan_instrument_division (location_t loc, tree op0, tree op1)
/* At this point both operands should have the same type,
because they are already converted to RESULT_TYPE.
Use TYPE_MAIN_VARIANT since typedefs can confuse us. */
gcc_assert (TYPE_MAIN_VARIANT (TREE_TYPE (op0))
== TYPE_MAIN_VARIANT (TREE_TYPE (op1)));
tree top0 = TYPE_MAIN_VARIANT (type);
tree top1 = TYPE_MAIN_VARIANT (TREE_TYPE (op1));
gcc_checking_assert (lang_hooks.types_compatible_p (top0, top1));
op0 = unshare_expr (op0);
op1 = unshare_expr (op1);
......
2018-11-28 Jakub Jelinek <jakub@redhat.com>
PR c++/88215
* c-c++-common/ubsan/pr88215.c: New test.
2018-10-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/88182
......
/* PR c++/88215 */
/* { dg-do compile } */
/* { dg-options "-fsanitize=integer-divide-by-zero" } */
int
foo (void)
{
int a = 2, __attribute__ ((__unused__)) b = 1;
int f = a / b;
return f;
}
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