mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-19 08:19:02 +08:00
decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics in inlines.
* decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics in inlines. From-SVN: r37394
This commit is contained in:
parent
8ee322c993
commit
492cca2489
@ -1,3 +1,8 @@
|
||||
2000-11-09 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
|
||||
in inlines.
|
||||
|
||||
2000-11-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* decl.c (grokdeclarator, save_function_data): Use memcpy, not bcopy.
|
||||
@ -28,10 +33,10 @@
|
||||
|
||||
2000-11-07 Eric Christopher <echristo@redhat.com>
|
||||
|
||||
* decl.c (init_decl_processing): Change definition of
|
||||
__wchar_t to wchar_t. Remove artificial declaration of
|
||||
wchar_t.
|
||||
* lex.c: Change instances of __wchar_t to wchar_t.
|
||||
* decl.c (init_decl_processing): Change definition of
|
||||
__wchar_t to wchar_t. Remove artificial declaration of
|
||||
wchar_t.
|
||||
* lex.c: Change instances of __wchar_t to wchar_t.
|
||||
|
||||
2000-11-09 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
|
@ -7655,6 +7655,7 @@ maybe_commonize_var (decl)
|
||||
inlining of such functions. */
|
||||
current_function_cannot_inline
|
||||
= "function with static variable cannot be inline";
|
||||
DECL_UNINLINABLE (current_function_decl) = 1;
|
||||
|
||||
/* If flag_weak, we don't need to mess with this, as we can just
|
||||
make the function weak, and let it refer to its unique local
|
||||
|
10
gcc/testsuite/g++.old-deja/g++.other/comdat1-aux.cc
Normal file
10
gcc/testsuite/g++.old-deja/g++.other/comdat1-aux.cc
Normal file
@ -0,0 +1,10 @@
|
||||
inline int f ()
|
||||
{
|
||||
static int k;
|
||||
return ++k;
|
||||
}
|
||||
|
||||
int g ()
|
||||
{
|
||||
return f();
|
||||
}
|
24
gcc/testsuite/g++.old-deja/g++.other/comdat1.C
Normal file
24
gcc/testsuite/g++.old-deja/g++.other/comdat1.C
Normal file
@ -0,0 +1,24 @@
|
||||
// Test that statics in inline functions are unified between
|
||||
// translation units. Currently we handle this by just suppressing
|
||||
// inling and relying on unification of the function itself.
|
||||
|
||||
// Special g++ Options: -O
|
||||
|
||||
// Additional sources: comdat1-aux.cc
|
||||
|
||||
inline int f ()
|
||||
{
|
||||
static int i;
|
||||
return ++i;
|
||||
}
|
||||
|
||||
int g ();
|
||||
|
||||
int main ()
|
||||
{
|
||||
if (f() != 1
|
||||
|| g() != 2
|
||||
|| f() != 3)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user