[PATCH] PR rtl-optimization/32219: optimizer causees wrong code in pic/hidden/weak symbol checking

Jack Howarth howarth.at.gcc@gmail.com
Thu Feb 12 19:39:00 GMT 2015


On Thu, Feb 12, 2015 at 2:18 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Thu, Feb 12, 2015 at 11:16 AM, Jack Howarth <howarth.at.gcc@gmail.com> wrote:
>> H.J.,
>>    Oddly I saw no regressions in the g++ test suite at -m32/-m64 on
>> x86_64-apple-darwin14.
>>            Jack
>
> They have
>
> // { dg-require-effective-target tls }
>
> Does x86_64-apple-darwin14 support TLS?  If yes, what does the
> generated assembly code look like?

We use emutls on darwin. Those failing test are run at -m32/-m64...

Executing on host:
/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/testsuite/g++/../../xg++
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/testsuite/g++/../../
/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/gcc/testsuite/g++.dg/gomp/tls-wrap4.C
 -fno-diagnostics-show-caret -fdiagnostics-color=never  -nostdinc++
-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/x86_64-apple-darwin13.4.0/libstdc++-v3/include/x86_64-apple-darwin13.4.0
-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/x86_64-apple-darwin13.4.0/libstdc++-v3/include
-I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/libstdc++-v3/libsupc++
-I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/libstdc++-v3/include/backward
-I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/libstdc++-v3/testsuite/util
-fmessage-length=0  -std=gnu++11 -fPIC  -S  -m64  -o tls-wrap4.s
(timeout = 300)
spawn -ignore SIGHUP
/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/testsuite/g++/../../xg++
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc/testsuite/g++/../../
/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/gcc/testsuite/g++.dg/gomp/tls-wrap4.C
-fno-diagnostics-show-caret -fdiagnostics-color=never -nostdinc++
-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/x86_64-apple-darwin13.4.0/libstdc++-v3/include/x86_64-apple-darwin13.4.0
-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/x86_64-apple-darwin13.4.0/libstdc++-v3/include
-I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/libstdc++-v3/libsupc++
-I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/libstdc++-v3/include/backward
-I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150212/libstdc++-v3/testsuite/util
-fmessage-length=0 -std=gnu++11 -fPIC -S -m64 -o tls-wrap4.s^M
PASS: g++.dg/gomp/tls-wrap4.C  -std=gnu++11 (test for excess errors)
PASS: g++.dg/gomp/tls-wrap4.C  -std=gnu++11  scan-assembler-not _ZTW1i@PLT

and produce the attached assembly.
                Jack

>
>> On Thu, Feb 12, 2015 at 1:16 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> On Wed, Feb 11, 2015 at 10:22 PM, Richard Henderson <rth@redhat.com> wrote:
>>>> On 02/10/2015 01:19 PM, Richard Henderson wrote:
>>>>> As an existing issue, I'm not sure why "specified" visibility is any different
>>>>> from unspecified visibility.  As far as I'm aware, the "specified" bit simply
>>>>> means that the decl doesn't inherit inherit visibility from the class, or from
>>>>> the command-line.  But once we're this far, the visibility actually applied to
>>>>> the symbol should be all that matters.
>>>>
>>>> The test is there to differentiate explicit visibility from that implied from
>>>> the command-line.  Without it, we assume hidden visibility for external symbols
>>>> too early, making the command-line option useless.  This is visible even in
>>>> building libgcc.
>>>>
>>>> I believe this set of patches does what we want, and cleans things up a bit in
>>>> the process.
>>>>
>>>>
>>>
>>> I tried them on Linux/x86-64.  They caused:
>>>
>>> FAIL: g++.dg/gomp/tls-wrap4.C  -std=gnu++11  scan-assembler-not _ZTW1i@PLT
>>> FAIL: g++.dg/gomp/tls-wrap4.C  -std=gnu++11  scan-assembler-not _ZTW1i@PLT
>>> FAIL: g++.dg/gomp/tls-wrap4.C  -std=gnu++14  scan-assembler-not _ZTW1i@PLT
>>> FAIL: g++.dg/gomp/tls-wrap4.C  -std=gnu++14  scan-assembler-not _ZTW1i@PLT
>>> FAIL: g++.dg/tls/thread_local-wrap4.C  -std=gnu++11
>>> scan-assembler-not _ZTW1i@PLT
>>> FAIL: g++.dg/tls/thread_local-wrap4.C  -std=gnu++11
>>> scan-assembler-not _ZTW1i@PLT
>>> FAIL: g++.dg/tls/thread_local-wrap4.C  -std=gnu++14
>>> scan-assembler-not _ZTW1i@PLT
>>> FAIL: g++.dg/tls/thread_local-wrap4.C  -std=gnu++14
>>> scan-assembler-not _ZTW1i@PLT
>>>
>>>
>>> --
>>> H.J.
>
>
>
> --
> H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tls-wrap4.s
Type: application/octet-stream
Size: 1668 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20150212/e5f40d39/attachment.obj>


More information about the Gcc-patches mailing list