This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Vectorizer/alignment


On 11/11/2013 11:57 PM, Richard Biener wrote:
> On Mon, Nov 11, 2013 at 2:39 PM, Jakub Jelinek <jakub@redhat.com> wrote:
>> On Mon, Nov 11, 2013 at 02:13:24PM +0100, Richard Biener wrote:
>>> On Mon, Nov 11, 2013 at 12:39 PM, Jakub Jelinek <jakub@redhat.com> wrote:
>>>> On Mon, Nov 11, 2013 at 12:29:29PM +0100, Richard Biener wrote:
>>>>> On Fri, Nov 8, 2013 at 6:51 PM, Hendrik Greving
>>>>> <hendrik.greving.intel@gmail.com> wrote:
>>>>>> That didn't do it. What was the rationale w.r.t. to the relation
>>>>>> between the vectorized sequenced and/or the alignment (I think these
>>>>>> things are actually 2 separate things..) and the common block?!
>>>>>
>>>>> We cannot adjust the alignment of a common block as we don't know
>>>>> which common block the linker will pick in the end.  We can (and do)
>>>>> adjust the alignment of global variables though.  And C++ defaults
>>>>> to -fno-common.
>>>>>
>>>>> In general when asking optimization questions it helps to provide
>>>>> a testcase that can be compiled - otherwise you just provoke
>>>>> random guesses (like mine) ;)
>>>>
>>>> Well, we had the discussion about turning -fno-common by default for C as
>>>> well, I think it wouldn't hurt and let people use -fcommon if they need it.
>>>
>>> Yeah, so ... shall we just do it?  Maybe just for a selected set of
>>> targets (based on OS?)?
>>
>> I vote for it.  Perhaps with the exception when the variables are also weak,
>> this worst case results in a link time failure which is easily fixable by
>> adding -fcommon where really required, and in the usual case (dynamic
>> linking) it is limited to the each package individually, if we document this
>> in porting_to.html, I think changing the default is fine.
>>
>> But I guess it would be nice to hear more voices.
> 
> Most fallout will be from headers that fail to declare variables
> as 'extern' (IIRC SPEC CPU 2000 has tons of that).  It also
> hides bugs where one unit has 'int x' and one 'float x' (SPEC CPU 2006,
> LTO diagnoses this).

It's for reasons like this that I'd not be especially comfortable
changing the default of -fcommon for c89 (or gnu89, our default).

I think we'd be ok changing the default for c99+, as that implies
a certain "recentness" about the program under compilation, which
to me implies they ought to know better.

> 
> I suppose targets without .bss section support should not switch
> (that is, targets not defining BSS_SECTION_ASM_OP or
> ASM_OUTPUT_ALIGNED_BSS).

Good point.  I don't expect that we have many of those left, but
if any do still exist...


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]