On November 20, 2017 9:02:55 PM GMT+01:00, Sandra Loosemore 
<san...@codesourcery.com> wrote:
>On 11/20/2017 10:34 AM, Michael Matz wrote:
>> What's your rationale for changing this?  In your initial mail you
>said:
>> 
>> "On many targets this means global variable accesses having an
>unnecessary
>> codesize and performance penalty in C code (the same source generates
>> better code when built as C++)."
>> 
>> I have a hard time imaging that, so can you give details?  FWIW I've
>> personally always considered using common symbols nicer.
>
>The optimization case I'm familiar with is for targets that support -G 
>and GP-relative addressing modes to address small data.  Generally you 
>can only do that if the variable is allocated in the same compilation 
>unit as the reference, so the compiler knows definitely where it's 
>placed (unless the backend also supports some other mechanism for 
>asserting that a variable is small data).  Putting tentatively-defined 
>variables in common defeats that optimization.

Also we cannot raise alignment of commons and thus vectorization is pessimized 
(all vectorizer testcases use - fno-common). 

IIRC LTO promotes commons to locals. 

Richard. 

>-Sandra

Reply via email to