34 lines
1.2 KiB
Diff
34 lines
1.2 KiB
Diff
2007-05-03 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
* varasm.c (align_variable): Don't increase alignment for
|
|
DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
|
|
DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
|
|
|
|
--- gcc/varasm.c.jj 2007-04-14 14:55:25.000000000 +0200
|
|
+++ gcc/varasm.c 2007-05-03 11:23:56.000000000 +0200
|
|
@@ -1097,11 +1097,22 @@ align_variable (tree decl, bool dont_out
|
|
if (! DECL_USER_ALIGN (decl))
|
|
{
|
|
#ifdef DATA_ALIGNMENT
|
|
- align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
|
|
+ unsigned int data_align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
|
|
+ /* Don't increase alignment too much for TLS variables - TLS space
|
|
+ is too precious. */
|
|
+ if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
|
|
+ align = data_align;
|
|
#endif
|
|
#ifdef CONSTANT_ALIGNMENT
|
|
if (DECL_INITIAL (decl) != 0 && DECL_INITIAL (decl) != error_mark_node)
|
|
- align = CONSTANT_ALIGNMENT (DECL_INITIAL (decl), align);
|
|
+ {
|
|
+ unsigned int const_align = CONSTANT_ALIGNMENT (DECL_INITIAL (decl),
|
|
+ align);
|
|
+ /* Don't increase alignment too much for TLS variables - TLS space
|
|
+ is too precious. */
|
|
+ if (! DECL_THREAD_LOCAL_P (decl) || const_align <= BITS_PER_WORD)
|
|
+ align = const_align;
|
|
+ }
|
|
#endif
|
|
}
|
|
|