Commit 4d1b8e70 by Jakub Jelinek Committed by Jakub Jelinek

re PR c/80097 (internal compiler error in c_fully_fold_internal with std=c89 and…

re PR c/80097 (internal compiler error in c_fully_fold_internal with std=c89 and -fsanitize=float-divide-by-zero)

	PR c/80097
	* c-typeck.c (build_binary_op): Add EXCESS_PRECISION_EXPR only around
	optional COMPOUND_EXPR with ubsan instrumentation.

	* gcc.dg/ubsan/pr80097.c: New test.

From-SVN: r246302
parent ece3b7e6
2017-03-21 Jakub Jelinek <jakub@redhat.com>
PR c/80097
* c-typeck.c (build_binary_op): Add EXCESS_PRECISION_EXPR only around
optional COMPOUND_EXPR with ubsan instrumentation.
2017-03-17 Marek Polacek <polacek@redhat.com>
* c-parser.c: Add C11 references.
......
......@@ -11856,14 +11856,16 @@ build_binary_op (location_t location, enum tree_code code,
else if (TREE_CODE (ret) != INTEGER_CST && int_operands
&& !in_late_binary_op)
ret = note_integer_operands (ret);
if (semantic_result_type)
ret = build1 (EXCESS_PRECISION_EXPR, semantic_result_type, ret);
protected_set_expr_location (ret, location);
if (instrument_expr != NULL)
ret = fold_build2 (COMPOUND_EXPR, TREE_TYPE (ret),
instrument_expr, ret);
if (semantic_result_type)
ret = build1_loc (location, EXCESS_PRECISION_EXPR,
semantic_result_type, ret);
return ret;
}
......
2017-03-21 Jakub Jelinek <jakub@redhat.com>
PR c/80097
* gcc.dg/ubsan/pr80097.c: New test.
2017-03-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/80054
......
/* PR c/80097 */
/* { dg-do compile } */
/* { dg-options "-std=c89 -fsanitize=float-divide-by-zero" } */
int
foo (double a)
{
int b = (1 / a >= 1);
return b;
}
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