]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Backport r258924
authorMartin Liska <mliska@suse.cz>
Tue, 24 Apr 2018 15:17:48 +0000 (17:17 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Tue, 24 Apr 2018 15:17:48 +0000 (15:17 +0000)
2018-04-24  Martin Liska  <mliska@suse.cz>

Backport from mainline
2018-03-28  Jakub Jelinek  <jakub@redhat.com>
    Martin Liska  <mliska@suse.cz>

PR sanitizer/85081
* gimplify.c (asan_poison_variable): Don't do the check for
gimplify_omp_ctxp here.
(gimplify_decl_expr): Do it here.
(gimplify_target_expr): Likewise.
2018-04-24  Martin Liska  <mliska@suse.cz>

Backport from mainline
2018-03-28  Jakub Jelinek  <jakub@redhat.com>
    Martin Liska  <mliska@suse.cz>

PR sanitizer/85081
* g++.dg/asan/pr85081.C: New test.

From-SVN: r259599

gcc/ChangeLog
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/asan/pr85081.C [new file with mode: 0644]

index 684c664316d94050c3c73666bc371180d1dcceac..4fc3d2e83cdb2e03a4c69fc8bd0a147a5aaf1369 100644 (file)
@@ -1,3 +1,15 @@
+2018-04-24  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2018-03-28  Jakub Jelinek  <jakub@redhat.com>
+                   Martin Liska  <mliska@suse.cz>
+
+       PR sanitizer/85081
+       * gimplify.c (asan_poison_variable): Don't do the check for
+       gimplify_omp_ctxp here.
+       (gimplify_decl_expr): Do it here.
+       (gimplify_target_expr): Likewise.
+
 2018-04-24  Martin Liska  <mliska@suse.cz>
 
        Backport from mainline
index 5264a4f3d40f9314729fb94d5bae9381f3f2e19c..15fc7c9ae8f64d81cff1883f86776b1a7aac3404 100644 (file)
@@ -1125,10 +1125,6 @@ static void
 asan_poison_variable (tree decl, bool poison, gimple_stmt_iterator *it,
                      bool before)
 {
-  /* When within an OMP context, do not emit ASAN_MARK internal fns.  */
-  if (gimplify_omp_ctxp)
-    return;
-
   tree unit_size = DECL_SIZE_UNIT (decl);
   tree base = build_fold_addr_expr (decl);
 
@@ -1640,7 +1636,8 @@ gimplify_decl_expr (tree *stmt_p, gimple_seq *seq_p)
          && TREE_ADDRESSABLE (decl)
          && !TREE_STATIC (decl)
          && !DECL_HAS_VALUE_EXPR_P (decl)
-         && dbg_cnt (asan_use_after_scope))
+         && dbg_cnt (asan_use_after_scope)
+         && !gimplify_omp_ctxp)
        {
          asan_poisoned_variables->add (decl);
          asan_poison_variable (decl, false, seq_p);
@@ -6458,7 +6455,8 @@ gimplify_target_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
              clobber = build2 (MODIFY_EXPR, TREE_TYPE (temp), temp, clobber);
              gimple_push_cleanup (temp, clobber, false, pre_p, true);
            }
-         if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope))
+         if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope)
+             && !gimplify_omp_ctxp)
            {
              tree asan_cleanup = build_asan_poison_call_expr (temp);
              if (asan_cleanup)
index 65f46d4df8e8a77914422f786c53782f75144d7a..d7be0a0295ad31a88335effaaf7f73aa809506bd 100644 (file)
@@ -1,3 +1,12 @@
+2018-04-24  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2018-03-28  Jakub Jelinek  <jakub@redhat.com>
+                   Martin Liska  <mliska@suse.cz>
+
+       PR sanitizer/85081
+       * g++.dg/asan/pr85081.C: New test.
+
 2018-04-24  Martin Liska  <mliska@suse.cz>
 
        Backport from mainline
diff --git a/gcc/testsuite/g++.dg/asan/pr85081.C b/gcc/testsuite/g++.dg/asan/pr85081.C
new file mode 100644 (file)
index 0000000..d7dec31
--- /dev/null
@@ -0,0 +1,20 @@
+/* PR sanitizer/85081 */
+/* { dg-do run } */
+/* { dg-options "-fopenmp-simd" } */
+/* { dg-require-effective-target fopenmp } */
+
+inline const int& max(const int& a, const int& b)
+{
+  return a < b ? b : a;
+}
+
+int main()
+{
+  #pragma omp simd
+  for ( int i = 0; i < 20; ++i )
+  {
+    const int j = max(i, 1);
+  }
+
+  return 0;
+}