[C++] Protect call to copy_attributes_to_builtin (PR91505)

copy_attributes_to_builtin only handles BUILT_IN_NORMAL, but C++ was
calling it immediately after the:

	  if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL)

block.  The corresponding C code calls it inside the block instead.

2019-08-21  Richard Sandiford  <richard.sandiford@arm.com>

gcc/cp/
	PR c++/91505
	* decl.c (duplicate_decls): Call copy_attributes_to_builtin inside
	the BUILT_IN_NORMAL block rather than afterward.

gcc/testsuite/
	PR c++/91505
	* g++.target/i386/crc32-4.C: New test.

From-SVN: r274799
This commit is contained in:
Richard Sandiford 2019-08-21 13:59:31 +00:00 committed by Richard Sandiford
parent d6dea10acf
commit 077eb7af6e
4 changed files with 17 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2019-08-21 Richard Sandiford <richard.sandiford@arm.com>
PR c++/91505
* decl.c (duplicate_decls): Call copy_attributes_to_builtin inside
the BUILT_IN_NORMAL block rather than afterward.
2019-08-19 Marek Polacek <polacek@redhat.com>
PR c++/91264 - detect modifying const objects in constexpr.

View File

@ -2565,9 +2565,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
set_builtin_decl_declared_p (fncode, true);
break;
}
}
copy_attributes_to_builtin (newdecl);
copy_attributes_to_builtin (newdecl);
}
}
if (new_defines_function)
/* If defining a function declared with other language

View File

@ -1,3 +1,8 @@
2019-08-21 Richard Sandiford <richard.sandiford@arm.com>
PR c++/91505
* g++.target/i386/crc32-4.C: New test.
2019-08-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/91482

View File

@ -0,0 +1,4 @@
/* { dg-do compile } */
/* { dg-options "-O2 -mavx2" } */
#include "../../gcc.target/i386/crc32-4.c"