On Fri, May 25, 2012 at 5:27 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
> On Fri, May 25, 2012 at 5:16 PM, Sriraman Tallam <tmsri...@google.com> wrote:
>> Hi H.J.,
>>
>> On Fri, May 25, 2012 at 5:07 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>>> On Mon, May 14, 2012 at 11:28 AM, Sriraman Tallam <tmsri...@google.com> 
>>> wrote:
>>>> Hi H.J,
>>>>
>>>>   Attaching new patch with 2 test cases, mv2.C checks ISAs only and
>>>> mv1.C checks ISAs and arches mixed. Right now, checking only arches is
>>>> not needed as they are mutually exclusive, any order should be fine.
>>>>
>>>> Patch also available for review here:  
>>>> http://codereview.appspot.com/5752064
>>>
>>> Sorry for the delay.  It looks OK except for the function order in tescases.
>>> I think you should rearrange them so that they are not in the same order
>>> as the priority.
>>
>> I am not sure I understand. The function order is mixed up in the
>> declarations, I have explicitly commented about this. I only do the
>> checking in order which I must, right?
>>
>>
>
> gcc/testsuite/g++.dg/mv2.C has
>
> int __attribute__ ((target("avx2")))
> foo ()
> {
>  return 1;
> }
>
> int __attribute__ ((target("avx")))
> foo ()
> {
>  return 2;
> }
>
> int __attribute__ ((target("popcnt")))
> foo ()
> {
>  return 3;
> }
>
> int __attribute__ ((target("sse4.2")))
> foo ()
> {
>  return 4;
> }
>
> int __attribute__ ((target("sse4.1")))
> foo ()
> {
>  return 5;
> }
>
> int __attribute__ ((target("ssse3")))
> foo ()
> {
>  return 6;
> }
>
> int __attribute__ ((target("sse3")))
> foo ()
> {
>  return 7;
> }
>
> int __attribute__ ((target("sse2")))
> foo ()
> {
>  return 8;
> }
>
> int __attribute__ ((target("sse")))
> foo ()
> {
>  return 9;
> }
>
> int __attribute__ ((target("mmx")))
> foo ()
> {
>  return 10;
> }
>
> It is most in the priority order.

Ah! ok, got it. I kept it that way because it is really the order of
the declarations before the call that matter but I will rearrange the
definitions too to be clear.

>
> BTW, I noticed:
>
> [hjl@gnu-6 pr14170]$ readelf -sW libgcc.a | grep __cpu_model
>    20: 0000000000000010    16 OBJECT  GLOBAL HIDDEN   COM __cpu_model
> [hjl@gnu-6 pr14170]$ readelf -sW libgcc_s.so | grep __cpu_model
>    82: 0000000000214ff0    16 OBJECT  GLOBAL DEFAULT   24
> __cpu_model@@GCC_4.8.0
>   310: 0000000000214ff0    16 OBJECT  GLOBAL DEFAULT   24 __cpu_model
> [hjl@gnu-6 pr14170]$
>
> Why is __cpu_model in both libgcc.a and libgcc_s.o?

How do I disallow this in libgcc_s.so? Looks like t-cpuinfo file is
wrong but I cannot figure out the fix.

Thanks,
-Sri.

>
>
> H.J.

Reply via email to