Re: [PATCH] xtensa: align data naturally when optimizing for size

2015-02-23 Thread augustine.sterl...@gmail.com
On Sat, Feb 21, 2015 at 4:19 PM, Max Filippov jcmvb...@gmail.com wrote:
 gcc for xtensa always aligns data at least to a word boundary, even when
 it has smaller natural alignment. This results in unexpectedly high data
 section sizes and unreasonable amount of wasted space when linking
 objects compiled with -fdata-sections flag.

 Align data naturally when optimization for size is enabled.

 2015-02-22  Max Filippov  jcmvb...@gmail.com

 gcc/
 * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT, DATA_ALIGNMENT):
 use natural alignment when optimizing for size.

This is OK for xtensa.


Re: [PATCH] xtensa: align data naturally when optimizing for size

2015-02-23 Thread Max Filippov
On Tue, Feb 24, 2015 at 2:30 AM, augustine.sterl...@gmail.com
augustine.sterl...@gmail.com wrote:
 On Sat, Feb 21, 2015 at 4:19 PM, Max Filippov jcmvb...@gmail.com wrote:

 gcc for xtensa always aligns data at least to a word boundary, even when
 it has smaller natural alignment. This results in unexpectedly high data
 section sizes and unreasonable amount of wasted space when linking
 objects compiled with -fdata-sections flag.

 Align data naturally when optimization for size is enabled.

 2015-02-22  Max Filippov  jcmvb...@gmail.com


 This is OK for xtensa.

Applied to trunk. Thanks!

-- Max


[PATCH] xtensa: align data naturally when optimizing for size

2015-02-21 Thread Max Filippov
gcc for xtensa always aligns data at least to a word boundary, even when
it has smaller natural alignment. This results in unexpectedly high data
section sizes and unreasonable amount of wasted space when linking
objects compiled with -fdata-sections flag.

Align data naturally when optimization for size is enabled.

2015-02-22  Max Filippov  jcmvb...@gmail.com

gcc/
* config/xtensa/xtensa.h (CONSTANT_ALIGNMENT, DATA_ALIGNMENT):
use natural alignment when optimizing for size.
---
 gcc/config/xtensa/xtensa.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h
index 0de072b..74ca240 100644
--- a/gcc/config/xtensa/xtensa.h
+++ b/gcc/config/xtensa/xtensa.h
@@ -174,7 +174,8 @@ extern unsigned xtensa_current_frame_size;
constants to be word aligned so that 'strcpy' calls that copy
constants can be done inline.  */
 #define CONSTANT_ALIGNMENT(EXP, ALIGN) \
-  ((TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR)   \
+  (!optimize_size\
+   (TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR)   \
 (ALIGN)  BITS_PER_WORD  \
? BITS_PER_WORD \
: (ALIGN))
@@ -186,7 +187,7 @@ extern unsigned xtensa_current_frame_size;
that copy constants to character arrays can be done inline.  */
 #undef DATA_ALIGNMENT
 #define DATA_ALIGNMENT(TYPE, ALIGN)\
-  ALIGN)  BITS_PER_WORD)  \
+  (!optimize_size  (((ALIGN)  BITS_PER_WORD)
\
  (TREE_CODE (TYPE) == ARRAY_TYPE \
|| TREE_CODE (TYPE) == UNION_TYPE   \
|| TREE_CODE (TYPE) == RECORD_TYPE)) ? BITS_PER_WORD : (ALIGN))
-- 
1.8.1.4