[cfe-dev] add new option -fnovisibility for clang

Eli Friedman via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 10 13:01:37 PDT 2020


That name is terrible; if we’re going to add this, the canonical name should be something like -fignore-visibility-attributes. (We can also accept an alias if you need it.)

In terms of the functionality, it seems a little weird; cross-platform projects usually use macros for this sort of thing.  And I’m a little worried we’ll eventually need to add an attribute to override the flag, and then we’ll need flag to override that attribute, etc.  But if we need it for compatibility with existing AIX compilers, it’s hard to argue with that.

-Eli

From: cfe-dev <cfe-dev-bounces at lists.llvm.org> On Behalf Of digger lin via cfe-dev
Sent: Thursday, September 10, 2020 7:04 AM
To: cfe-dev at lists.llvm.org
Subject: [EXT] [cfe-dev] add new option -fnovisibility for clang

Hi All,

  In IBM compiler Xlclang , there is option -fnovisibiilty. The option is description as
  https://www.ibm.com/support/knowledgecenter/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/compiler_ref/opt_visibility.html

  we need to add the option -fnovisibiilty for clang in the IBM AIX OS(and the option is enabled by default in AIX OS).
  I will implement the option in the other OS platform.(but the option is disabled by default in other OS).

  For example, the file test.c

 bash-4.2$ test.c
 __attribute__((visibility ("protected"))) int b;

 1 In AIX OS:

 1.1 Compiled with

  clang -fnovisibility    -target powerpc-unknown-aix  -emit-llvm  -S test.c
 or
  clang -target powerpc-unknown-aix  -emit-llvm  -S test.c  ( the -fnovisibility is enabled by default in AIX OS)

 Generate IR as :

  @b = global i32 0, align 4

 1.2 Compiled with
  (If have "-fnovisibility  -fvisibility=*" at the same time.  the compile will ignore the -fnovisibility).

  clang -fnovisibility  -fvisibility=default   -target powerpc-unknown-aix   -emit-llvm  -S test.c

Or

  clang -fvisibility=default   -target powerpc-unknown-aix   -emit-llvm  -S test.c

  Generate IR as :
  @b = protected global i32 0, align 4

 2. In Other OS(not AIX)
   2.1 clang -fnovisibility    -target powerpc-unknown-linux  -emit-llvm  -S test.c

    Generate IR as :
    @b = global i32 0, align 4

  2.2
    clang -target powerpc-unknown-linux  -emit-llvm  -S test.c ( the -fnovisibility is disabled by default in not AIX OS)
  Or
    (if have "-fnovisibility  -fvisibility=*" at the same time.  the compile will ignore the -fnovisibility).
    clang -fnovisibility  -fvisibility=default   -target powerpc-unknown-linux   -emit-llvm  -S test.c
  Or
    clang -fvisibility=default   -target powerpc-unknown-linux   -emit-llvm  -S test.c

   Generate IR as :
    @b = protected global i32 0, align 4
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200910/56867be4/attachment.html>


More information about the cfe-dev mailing list