mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 15:11:08 +08:00
re PR middle-end/64805 (Specific use of __attribute ((always_inline)) breaks MPX functionality with -fcheck-pointer-bounds -mmpx)
gcc/ PR middle-end/64805 * ipa-inline.c (early_inliner): Rebuild IPA_REF_CHKP reference to avoid error in cgraph node verification. gcc/testsuite/ PR middle-end/64805 * gcc.target/i386/pr64805.c: New. From-SVN: r220240
This commit is contained in:
parent
2b6969cd7f
commit
c291690eb5
@ -1,3 +1,9 @@
|
||||
2015-01-29 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
PR middle-end/64805
|
||||
* ipa-inline.c (early_inliner): Rebuild IPA_REF_CHKP reference
|
||||
to avoid error in cgraph node verification.
|
||||
|
||||
2015-01-29 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* doc/standards.texi: Reflect that the default for C is gnu11.
|
||||
|
@ -2506,6 +2506,13 @@ early_inliner (function *fun)
|
||||
#endif
|
||||
node->remove_all_references ();
|
||||
|
||||
/* Rebuild this reference because it dosn't depend on
|
||||
function's body and it's required to pass cgraph_node
|
||||
verification. */
|
||||
if (node->instrumented_version
|
||||
&& !node->instrumentation_clone)
|
||||
node->create_reference (node->instrumented_version, IPA_REF_CHKP, NULL);
|
||||
|
||||
/* Even when not optimizing or not inlining inline always-inline
|
||||
functions. */
|
||||
inlined = inline_always_inline_functions (node);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-01-29 Ilya Enkovich <ilya.enkovich@intel.com>
|
||||
|
||||
PR middle-end/64805
|
||||
* gcc.target/i386/pr64805.c: New.
|
||||
|
||||
2015-01-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* gcc.dg/guality/guality.h (main): Add argv[0] to
|
||||
|
22
gcc/testsuite/gcc.target/i386/pr64805.c
Normal file
22
gcc/testsuite/gcc.target/i386/pr64805.c
Normal file
@ -0,0 +1,22 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target mpx } */
|
||||
/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
static inline void __attribute ((always_inline)) functionA(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void __attribute ((always_inline)) functionB(void)
|
||||
{
|
||||
functionA();
|
||||
}
|
||||
|
||||
int test(void)
|
||||
{
|
||||
functionB();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user