[PATCH] D89986: [AIX]ignore the option -fvisibility-inlines-hidden when there is no option -fvisibility=*
Digger via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 22 14:26:52 PDT 2020
DiggerLin created this revision.
DiggerLin added reviewers: jasonliu, hubert.reinterpretcast, sfertile.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
DiggerLin requested review of this revision.
in AIX OS, we will ignore the option -fvisibility-inlines-hidden when there is no option -fvisibility=*
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D89986
Files:
clang/lib/Frontend/CompilerInvocation.cpp
clang/test/CodeGen/aix-visibility-inlines-hidden.cpp
Index: clang/test/CodeGen/aix-visibility-inlines-hidden.cpp
===================================================================
--- /dev/null
+++ clang/test/CodeGen/aix-visibility-inlines-hidden.cpp
@@ -0,0 +1,44 @@
+// REQUIRES: powerpc-registered-target
+
+// RUN: %clang_cc1 -triple powerpc-unknown-aix -mcmodel=large -o - -x c++ -S %s |\
+// RUN: FileCheck --check-prefixes=NOP-ASM,COMMON-ASM %s
+
+// RUN: %clang_cc1 -triple powerpc-unknown-aix -mcmodel=large -fvisibility-inlines-hidden -o - -x c++ -S %s | \
+// RUN: FileCheck --check-prefixes=NOP-ASM,COMMON-ASM %s
+
+// RUN: %clang_cc1 -triple powerpc-unknown-aix -mcmodel=large -fvisibility-inlines-hidden -fvisibility default -o - -x c++ -S %s | \
+// RUN: FileCheck --check-prefix=COMMON-ASM %s
+
+// RUN: %clang_cc1 -triple powerpc-unknown-aix -mcmodel=large -emit-llvm -o - -x c++ %s | \
+// RUN: FileCheck -check-prefixes=COMMON-IR,NOVISIBILITY-IR %s
+
+// RUN: %clang_cc1 -triple powerpc-unknown-aix -mcmodel=large -fvisibility-inlines-hidden -emit-llvm -o - -x c++ %s | \
+// RUN: FileCheck -check-prefixes=COMMON-IR,NOVISIBILITY-IR %s
+
+// RUN: %clang_cc1 -triple powerpc-unknown-aix -mcmodel=large -fvisibility-inlines-hidden -fvisibility default -emit-llvm -o - -x c++ %s | \
+// RUN: FileCheck -check-prefixes=COMMON-IR,VISIBILITY-IR %s
+
+int x = 66;
+__attribute__((__noinline__)) inline void f() {
+ x = 55;
+}
+int bar() {
+ f();
+ return x;
+}
+
+// COMMON-ASM: mflr 0
+// COMMON-ASM-NEXT: stw 0, 8(1)
+// COMMON-ASM-NEXT: stwu 1, -64(1)
+// COMMON-ASM-NEXT: bl ._Z1fv
+// NOP-ASM-NEXT: nop
+
+// VISIBILITY-IR: define linkonce_odr hidden void @_Z1fv()
+// NOVISIBILITY-IR: define linkonce_odr void @_Z1fv()
+// COMMON-IR-NEXT: entry:
+// COMMON-IR-NEXT: store i32 55, i32* @x, align 4
+// COMMON-IR-NEXT: ret void
+
+// RUN: %clang_cc1 -triple powerpc-unknown-aix -mcmodel=large -fvisibility-inlines-hidden -fvisibility default -o - -x c++ -S %s | \
+// RUN: FileCheck --check-prefix=CHECK %s
+/// CHECK-NOT: nop
Index: clang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -2779,8 +2779,12 @@
Opts.setTypeVisibilityMode(Opts.getValueVisibilityMode());
}
- if (Args.hasArg(OPT_fvisibility_inlines_hidden))
- Opts.InlineVisibilityHidden = 1;
+ if (Args.hasArg(OPT_fvisibility_inlines_hidden)) {
+ if (T.isOSAIX() && !Args.hasArg(OPT_fvisibility))
+ Opts.InlineVisibilityHidden = 0;
+ else
+ Opts.InlineVisibilityHidden = 1;
+ }
if (Args.hasArg(OPT_fvisibility_inlines_hidden_static_local_var))
Opts.VisibilityInlinesHiddenStaticLocalVar = 1;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89986.300103.patch
Type: text/x-patch
Size: 2767 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20201022/bd0f743a/attachment.bin>
More information about the cfe-commits
mailing list