aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2017-03-28 08:13:04 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2017-03-28 08:13:04 +0000
commit72785f26600ba08db98c6f169e59e66fe09a81f3 (patch)
tree9cace1daa7a9728317f6e23bdfbed367ec88efcb /gcc
parentb1bd91584338e543ae7f6e7be707e6a2333f0c6d (diff)
downloadgcc-72785f26600ba08db98c6f169e59e66fe09a81f3.zip
gcc-72785f26600ba08db98c6f169e59e66fe09a81f3.tar.gz
gcc-72785f26600ba08db98c6f169e59e66fe09a81f3.tar.bz2
re PR sanitizer/80067 (ICE in fold_comparison with -fsanitize=undefined)
PR sanitizer/80067 * fold-const.c (fold_comparison): Use protected_set_expr_location instead of SET_EXPR_LOCATION. * c-c++-common/ubsan/shift-10.c: New test. From-SVN: r246521
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/fold-const.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/c-c++-common/ubsan/shift-10.c10
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 062afce..6917859 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-03-28 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/80067
+ * fold-const.c (fold_comparison): Use protected_set_expr_location
+ instead of SET_EXPR_LOCATION.
+
2017-03-28 Markus Trippelsdorf <markus@trippelsdorf.de>
* tree.c (add_expr): Avoid name lookup warning.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 1a9a264..6db16b5 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -8704,7 +8704,7 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
if (save_p)
{
tem = save_expr (build2 (code, type, cval1, cval2));
- SET_EXPR_LOCATION (tem, loc);
+ protected_set_expr_location (tem, loc);
return tem;
}
return fold_build2_loc (loc, code, type, cval1, cval2);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 086be29..93c9f9e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-03-28 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/80067
+ * c-c++-common/ubsan/shift-10.c: New test.
+
2017-03-27 Jeff Law <law@redhat.com>
PR tree-optimization/80216
diff --git a/gcc/testsuite/c-c++-common/ubsan/shift-10.c b/gcc/testsuite/c-c++-common/ubsan/shift-10.c
new file mode 100644
index 0000000..9202fcc
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/ubsan/shift-10.c
@@ -0,0 +1,10 @@
+/* PR sanitizer/80067 */
+/* { dg-do compile } */
+/* { dg-options "-fsanitize=shift" } */
+
+extern signed char a;
+void
+foo ()
+{
+ 0 << ((647 > a) - 1);
+}