diff options
author | Ilya Enkovich <ilya.enkovich@intel.com> | 2016-06-15 15:49:40 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2016-06-15 15:49:40 +0000 |
commit | 209d1e2d94c11f8407b53bc122115add9e050ecd (patch) | |
tree | 09fe21528636deac7694644506e1264b41c200ce /gcc | |
parent | 8dc35712198be33bcd9c89f8718dbbf108ff8fb1 (diff) | |
download | gcc-209d1e2d94c11f8407b53bc122115add9e050ecd.zip gcc-209d1e2d94c11f8407b53bc122115add9e050ecd.tar.gz gcc-209d1e2d94c11f8407b53bc122115add9e050ecd.tar.bz2 |
re PR middle-end/71529 ([CHKP] ICE in expand_expr_real_1)
gcc/
PR middle-end/71529
* ipa-chkp.c (chkp_build_instrumented_fndecl): Fix
DECL_CONTEXT for copied arguments.
gcc/testsuite/
PR middle-end/71529
* gcc.target/i386/pr71529.C: New test.
From-SVN: r237484
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-chkp.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr71529.C | 22 |
4 files changed, 40 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 88c1e0f..2aa82f5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-06-15 Ilya Enkovich <ilya.enkovich@intel.com> + + PR middle-end/71529 + * ipa-chkp.c (chkp_build_instrumented_fndecl): Fix + DECL_CONTEXT for copied arguments. + 2016-06-15 Alan Hayward <alan.hayward@arm.com> PR tree-optimization/71483 diff --git a/gcc/ipa-chkp.c b/gcc/ipa-chkp.c index 5f5df64..86c48f1 100644 --- a/gcc/ipa-chkp.c +++ b/gcc/ipa-chkp.c @@ -207,7 +207,13 @@ chkp_build_instrumented_fndecl (tree fndecl) /* For functions with body versioning will make a copy of arguments. For functions with no body we need to do it here. */ if (!gimple_has_body_p (fndecl)) - DECL_ARGUMENTS (new_decl) = copy_list (DECL_ARGUMENTS (fndecl)); + { + tree arg; + + DECL_ARGUMENTS (new_decl) = copy_list (DECL_ARGUMENTS (fndecl)); + for (arg = DECL_ARGUMENTS (new_decl); arg; arg = DECL_CHAIN (arg)) + DECL_CONTEXT (arg) = new_decl; + } /* We are going to modify attributes list and therefore should make own copy. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 60c3192..dbd8df8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-06-15 Ilya Enkovich <ilya.enkovich@intel.com> + + PR middle-end/71529 + * gcc.target/i386/pr71529.C: New test. + 2016-06-15 Alan Hayward <alan.hayward@arm.com> PR tree-optimization/71483 diff --git a/gcc/testsuite/gcc.target/i386/pr71529.C b/gcc/testsuite/gcc.target/i386/pr71529.C new file mode 100644 index 0000000..3169101 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr71529.C @@ -0,0 +1,22 @@ +/* PR71529 */ +/* { dg-do compile { target { ! x32 } } } */ +/* { dg-options "-fcheck-pointer-bounds -mmpx -O2" } */ + +class c1 +{ + public: + virtual ~c1 (); +}; + +class c2 +{ + public: + virtual ~c2 (); +}; + +class c3 : c1, c2 { }; + +int main (int, char **) +{ + c3 obj; +} |