[Bug middle-end/53335] New: [4.6,4.7,4.8] pragma visibility(hidden) propagates beyond pop

vincenzo.innocente at cern dot ch gcc-bugzilla@gcc.gnu.org
Sun May 13 08:59:00 GMT 2012


             Bug #: 53335
           Summary: [4.6,4.7,4.8]  pragma visibility(hidden)  propagates
                    beyond pop
    Classification: Unclassified
           Product: gcc
           Version: 4.7.1
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: vincenzo.innocente@cern.ch

Created attachment 27391
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27391
directory containing two source files and a script. source files obtained
preprocessing real-life code

This problem is quite serious as prevent any further testing involving

in the attached example from real-life code (a simpler test does not show the
"buggy" behavior) function defined after the #pragma GCC visibility pop
are hidden anyhow…
in the example below they are the kernel_measure* functions which are defined
way below the #pragma GCC visibility pop (see output of grep) 


tar -zxf vpragma.tgz
cd vpragma

cat make
sed 's/.*visibility.*//g' kk.c > kkv.c
c++ kk.c rr.c -shared -o bha.so -fPIC ; nm -C bha.so | grep kernel
c++ kkv.c rr.c -shared -o bha.so -fPIC ; nm -C bha.so | grep kernel
diff kk.c kkv.c
grep -n kernel_ kk.c

source make
0000000000001524 t kernel_measureLU(int, double, Random_struct*)
0000000000000e80 t kernel_measureFFT(int, double, Random_struct*)
0000000000000fea t kernel_measureSOR(int, double, Random_struct*)
0000000000001130 t kernel_measureMonteCarlo(double, Random_struct*)
000000000000126a t kernel_measureSparseMatMult(int, int, double,
00000000000016e4 T kernel_measureLU(int, double, Random_struct*)
0000000000001040 T kernel_measureFFT(int, double, Random_struct*)
00000000000011aa T kernel_measureSOR(int, double, Random_struct*)
00000000000012f0 T kernel_measureMonteCarlo(double, Random_struct*)
000000000000142a T kernel_measureSparseMatMult(int, int, double,
< #pragma GCC visibility push(hidden)
< #pragma GCC visibility pop
2622:    double kernel_measureFFT(int N, double mintime, Random R)
2656:    double kernel_measureSOR(int N, double min_time, Random R)
2684:    double kernel_measureMonteCarlo(double min_time, Random R)
2707:    double kernel_measureSparseMatMult(int N, int nz,
2773:    double kernel_measureLU(int N, double min_time, Random R)

More information about the Gcc-bugs mailing list