1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00

[AIX] Turn -fdata-sections on by default in Clang

Summary:

This patch does the following:
1. Make InitTargetOptionsFromCodeGenFlags() accepts Triple as a
 parameter, because some options' default value is triple dependant.
2. DataSections is turned on by default on AIX for llc.
3. Test cases change accordingly because of the default behaviour change.
4. Clang Driver passes in -fdata-sections by default on AIX.

Reviewed By: MaskRay, DiggerLin

Differential Revision: https://reviews.llvm.org/D88737
This commit is contained in:
jasonliu 2020-10-14 15:55:55 +00:00
parent 500c5cb174
commit d77cbcb130
32 changed files with 134 additions and 80 deletions

View File

@ -771,6 +771,11 @@ public:
return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment(); return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment();
} }
/// Tests whether the target uses -data-sections as default.
bool hasDefaultDataSections() const {
return isOSBinFormatXCOFF() || isWasm();
}
/// @} /// @}
/// @name Mutators /// @name Mutators
/// @{ /// @{

View File

@ -14,6 +14,7 @@
#include "llvm/ADT/FloatingPointMode.h" #include "llvm/ADT/FloatingPointMode.h"
#include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/Triple.h"
#include "llvm/IR/Instructions.h" #include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h" #include "llvm/IR/Intrinsics.h"
#include "llvm/MC/MCTargetOptionsCommandFlags.h" #include "llvm/MC/MCTargetOptionsCommandFlags.h"
@ -134,9 +135,13 @@ struct RegisterCodeGenFlags {
llvm::BasicBlockSection getBBSectionsMode(llvm::TargetOptions &Options); llvm::BasicBlockSection getBBSectionsMode(llvm::TargetOptions &Options);
// Common utility function tightly tied to the options listed here. Initializes /// Common utility function tightly tied to the options listed here. Initializes
// a TargetOptions object with CodeGen flags and returns it. /// a TargetOptions object with CodeGen flags and returns it.
TargetOptions InitTargetOptionsFromCodeGenFlags(); /// \p TheTriple is used to determine the default value for options if
/// options are not explicitly specified. If those triple dependant options
/// value do not have effect for your component, a default Triple() could be
/// passed in.
TargetOptions InitTargetOptionsFromCodeGenFlags(const llvm::Triple &TheTriple);
std::string getCPUStr(); std::string getCPUStr();

View File

@ -461,7 +461,8 @@ codegen::getBBSectionsMode(llvm::TargetOptions &Options) {
// Common utility function tightly tied to the options listed here. Initializes // Common utility function tightly tied to the options listed here. Initializes
// a TargetOptions object with CodeGen flags and returns it. // a TargetOptions object with CodeGen flags and returns it.
TargetOptions codegen::InitTargetOptionsFromCodeGenFlags() { TargetOptions
codegen::InitTargetOptionsFromCodeGenFlags(const Triple &TheTriple) {
TargetOptions Options; TargetOptions Options;
Options.AllowFPOpFusion = getFuseFPOps(); Options.AllowFPOpFusion = getFuseFPOps();
Options.UnsafeFPMath = getEnableUnsafeFPMath(); Options.UnsafeFPMath = getEnableUnsafeFPMath();
@ -485,7 +486,8 @@ TargetOptions codegen::InitTargetOptionsFromCodeGenFlags() {
Options.StackSymbolOrdering = getStackSymbolOrdering(); Options.StackSymbolOrdering = getStackSymbolOrdering();
Options.UseInitArray = !getUseCtors(); Options.UseInitArray = !getUseCtors();
Options.RelaxELFRelocations = getRelaxELFRelocations(); Options.RelaxELFRelocations = getRelaxELFRelocations();
Options.DataSections = getDataSections(); Options.DataSections =
getExplicitDataSections().getValueOr(TheTriple.hasDefaultDataSections());
Options.FunctionSections = getFunctionSections(); Options.FunctionSections = getFunctionSections();
Options.IgnoreXCOFFVisibility = getIgnoreXCOFFVisibility(); Options.IgnoreXCOFFVisibility = getIgnoreXCOFFVisibility();
Options.BBSections = getBBSectionsMode(Options); Options.BBSections = getBBSectionsMode(Options);

View File

@ -2,10 +2,10 @@
; is implemnted. ; is implemnted.
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | \ ; RUN: -mattr=-altivec -data-sections=false < %s | \
; RUN: FileCheck --check-prefix=ASM %s ; RUN: FileCheck --check-prefix=ASM %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | \ ; RUN: -mattr=-altivec -data-sections=false < %s | \
; RUN: FileCheck --check-prefix=ASM %s ; RUN: FileCheck --check-prefix=ASM %s
@var = global i32 42 @var = global i32 42

View File

@ -1,5 +1,5 @@
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck %s ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | FileCheck %s
@str = constant [256 x i8] c"\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F !\22#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7F\80\81\82\83\84\85\86\87\88\89\8A\8B\8C\8D\8E\8F\90\91\92\93\94\95\96\97\98\99\9A\9B\9C\9D\9E\9F\A0\A1\A2\A3\A4\A5\A6\A7\A8\A9\AA\AB\AC\AD\AE\AF\B0\B1\B2\B3\B4\B5\B6\B7\B8\B9\BA\BB\BC\BD\BE\BF\C0\C1\C2\C3\C4\C5\C6\C7\C8\C9\CA\CB\CC\CD\CE\CF\D0\D1\D2\D3\D4\D5\D6\D7\D8\D9\DA\DB\DC\DD\DE\DF\E0\E1\E2\E3\E4\E5\E6\E7\E8\E9\EA\EB\EC\ED\EE\EF\F0\F1\F2\F3\F4\F5\F6\F7\F8\F9\FA\FB\FC\FD\FE\FF\00", align 1 @str = constant [256 x i8] c"\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F !\22#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7F\80\81\82\83\84\85\86\87\88\89\8A\8B\8C\8D\8E\8F\90\91\92\93\94\95\96\97\98\99\9A\9B\9C\9D\9E\9F\A0\A1\A2\A3\A4\A5\A6\A7\A8\A9\AA\AB\AC\AD\AE\AF\B0\B1\B2\B3\B4\B5\B6\B7\B8\B9\BA\BB\BC\BD\BE\BF\C0\C1\C2\C3\C4\C5\C6\C7\C8\C9\CA\CB\CC\CD\CE\CF\D0\D1\D2\D3\D4\D5\D6\D7\D8\D9\DA\DB\DC\DD\DE\DF\E0\E1\E2\E3\E4\E5\E6\E7\E8\E9\EA\EB\EC\ED\EE\EF\F0\F1\F2\F3\F4\F5\F6\F7\F8\F9\FA\FB\FC\FD\FE\FF\00", align 1

View File

@ -1,15 +1,16 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | FileCheck --check-prefixes=COMMON,BIT32 %s ; RUN: -mattr=-altivec -data-sections=false < %s | FileCheck --check-prefixes=COMMON,BIT32 %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | FileCheck --check-prefixes=COMMON,BIT64 %s ; RUN: -mattr=-altivec -data-sections=false < %s | FileCheck --check-prefixes=COMMON,BIT64 %s
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s
; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ ; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \
; RUN: -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %s | FileCheck --check-prefix=XCOFF64 %s ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o 2>&1 < %s | \
; RUN: FileCheck --check-prefix=XCOFF64 %s
; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. ; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.

View File

@ -1,15 +1,15 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | FileCheck --check-prefixes=COMMON,BIT32 %s ; RUN: -mattr=-altivec -data-sections=false < %s | FileCheck --check-prefixes=COMMON,BIT32 %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | FileCheck --check-prefixes=COMMON,BIT64 %s ; RUN: -mattr=-altivec -data-sections=false < %s | FileCheck --check-prefixes=COMMON,BIT64 %s
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s
; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ ; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \
; RUN: -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %s | FileCheck --check-prefix=XCOFF64 %s ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o 2>&1 < %s | FileCheck --check-prefix=XCOFF64 %s
; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. ; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.
@bar_p = global i32 (...)* @bar_ref, align 4 @bar_p = global i32 (...)* @bar_ref, align 4

View File

@ -1,14 +1,14 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | \ ; RUN: -mattr=-altivec -data-sections=false < %s | \
; RUN: FileCheck --check-prefix=VISIBILITY-ASM %s ; RUN: FileCheck --check-prefix=VISIBILITY-ASM %s
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec -ignore-xcoff-visibility < %s | \ ; RUN: -mattr=-altivec -data-sections=false -ignore-xcoff-visibility < %s | \
; RUN: FileCheck --check-prefix=IGNOREVISIBILITY-ASM %s ; RUN: FileCheck --check-prefix=IGNOREVISIBILITY-ASM %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | \ ; RUN: -mattr=-altivec -data-sections=false < %s | \
; RUN: FileCheck --check-prefix=VISIBILITY-ASM %s ; RUN: FileCheck --check-prefix=VISIBILITY-ASM %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec -ignore-xcoff-visibility < %s | \ ; RUN: -mattr=-altivec -data-sections=false -ignore-xcoff-visibility < %s | \
; RUN: FileCheck --check-prefix=IGNOREVISIBILITY-ASM %s ; RUN: FileCheck --check-prefix=IGNOREVISIBILITY-ASM %s
@foo_p = global void ()* @zoo_extern_h, align 4 @foo_p = global void ()* @zoo_extern_h, align 4

View File

@ -1,17 +1,17 @@
# UNSUPPORTED: expensive_checks, debug # UNSUPPORTED: expensive_checks, debug
# RUN: %python %s > %t.ll # RUN: %python %s > %t.ll
# RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -mcpu=pwr4 -mattr=-altivec -O0 < %t.ll | \ # RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -data-sections=false -mcpu=pwr4 -mattr=-altivec -O0 < %t.ll | \
# RUN: FileCheck --check-prefix=ASM32 %s # RUN: FileCheck --check-prefix=ASM32 %s
# RUN: llc -mtriple powerpc64-ibm-aix-xcoff -code-model=small -mcpu=pwr4 -mattr=-altivec -O0 < %t.ll | \ # RUN: llc -mtriple powerpc64-ibm-aix-xcoff -code-model=small -data-sections=false -mcpu=pwr4 -mattr=-altivec -O0 < %t.ll | \
# RUN: FileCheck --check-prefix=ASM64 %s # RUN: FileCheck --check-prefix=ASM64 %s
# RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -mcpu=pwr4 -mattr=-altivec -O0 \ # RUN: llc -mtriple powerpc-ibm-aix-xcoff -code-model=small -data-sections=false -mcpu=pwr4 -mattr=-altivec -O0 \
# RUN: -filetype=obj -o %t.o < %t.ll # RUN: -filetype=obj -o %t.o < %t.ll
# RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck --check-prefix=DIS32 %s # RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck --check-prefix=DIS32 %s
# RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff \ # RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false \
# RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %t.ll | \ # RUN: -mcpu=pwr4 -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %t.ll | \
# RUN: FileCheck --check-prefix=XCOFF64 %s # RUN: FileCheck --check-prefix=XCOFF64 %s
# XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. # XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.

View File

@ -1,5 +1,7 @@
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff --relocation-model=pic < %s | FileCheck %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff \
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff --relocation-model=pic < %s | FileCheck --check-prefix=CHECK64 %s ; RUN: --relocation-model=pic -data-sections=false < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \
; RUN: --relocation-model=pic -data-sections=false < %s | FileCheck --check-prefix=CHECK64 %s
@a = common global i32 0 @a = common global i32 0
@b = constant i32* @a @b = constant i32* @a

View File

@ -1,5 +1,7 @@
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff \
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck --check-prefix=CHECK64 %s ; RUN: -data-sections=false < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \
; RUN: -data-sections=false < %s | FileCheck --check-prefix=CHECK64 %s
@foo_ptr = global void (...)* @foo @foo_ptr = global void (...)* @foo
declare void @foo(...) declare void @foo(...)

View File

@ -1,5 +1,5 @@
; RUN: llc -mcpu=pwr4 -mtriple=powerpc-ibm-aix-xcoff -verify-machineinstrs < %s | FileCheck %s ; RUN: llc -mcpu=pwr4 -mtriple=powerpc-ibm-aix-xcoff -verify-machineinstrs -data-sections=false < %s | FileCheck %s
; RUN: llc -mcpu=pwr4 -mtriple=powerpc-ibm-aix-xcoff -verify-machineinstrs -filetype=obj -o %t.o < %s ; RUN: llc -mcpu=pwr4 -mtriple=powerpc-ibm-aix-xcoff -verify-machineinstrs -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s
; RUN: llvm-readobj -sections %t.o | FileCheck --check-prefix=CHECKSECT %s ; RUN: llvm-readobj -sections %t.o | FileCheck --check-prefix=CHECKSECT %s

View File

@ -1,15 +1,16 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | FileCheck --check-prefixes=COMMON,BIT32 %s ; RUN: -mattr=-altivec -data-sections=false < %s | FileCheck --check-prefixes=COMMON,BIT32 %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | FileCheck --check-prefixes=COMMON,BIT64 %s ; RUN: -mattr=-altivec -data-sections=false < %s | FileCheck --check-prefixes=COMMON,BIT64 %s
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s ; RUN: llvm-readobj --symbols %t.o | FileCheck --check-prefix=CHECKSYM %s
; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \ ; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \
; RUN: -mattr=-altivec -filetype=obj -o %t.o 2>&1 < %s | FileCheck --check-prefix=XCOFF64 %s ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o 2>&1 < %s | \
; RUN: FileCheck --check-prefix=XCOFF64 %s
; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. ; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.
@foo_weak_p = global void (...)* bitcast (void ()* @foo_ref_weak to void (...)*), align 4 @foo_weak_p = global void (...)* bitcast (void ()* @foo_ref_weak to void (...)*), align 4

View File

@ -6,6 +6,24 @@
; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefix=CHECKOBJ %s ; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefix=CHECKOBJ %s
; RUN: llvm-readobj -syms %t.o | FileCheck --check-prefix=CHECKSYM %s ; RUN: llvm-readobj -syms %t.o | FileCheck --check-prefix=CHECKSYM %s
;; Test to see if the default is correct for -data-sections on AIX.
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff < %s | \
; RUN: FileCheck --check-prefixes=CHECK,CHECK32 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff < %s | \
; RUN: FileCheck --check-prefixes=CHECK,CHECK64 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefix=CHECKOBJ %s
; RUN: llvm-readobj -syms %t.o | FileCheck --check-prefix=CHECKSYM %s
;; Test to see if the default is correct for -data-sections on AIX.
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff < %s | \
; RUN: FileCheck --check-prefixes=CHECK,CHECK32 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff < %s | \
; RUN: FileCheck --check-prefixes=CHECK,CHECK64 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefix=CHECKOBJ %s
; RUN: llvm-readobj -syms %t.o | FileCheck --check-prefix=CHECKSYM %s
@ivar = local_unnamed_addr global i32 35, align 4 @ivar = local_unnamed_addr global i32 35, align 4
@const_ivar = constant i32 35, align 4 @const_ivar = constant i32 35, align 4

View File

@ -1,15 +1,15 @@
; This file tests the codegen of initialized and common variables in AIX ; This file tests the codegen of initialized and common variables in AIX
; assembly and XCOFF object files. ; assembly and XCOFF object files.
; RUN: llc -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,CHECK32 %s ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | FileCheck --check-prefixes=CHECK,CHECK32 %s
; RUN: llc -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,CHECK64 %s ; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | FileCheck --check-prefixes=CHECK,CHECK64 %s
; RUN: llc -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s ; RUN: llc -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --section-headers --file-header %t.o | \ ; RUN: llvm-readobj --section-headers --file-header %t.o | \
; RUN: FileCheck --check-prefix=OBJ %s ; RUN: FileCheck --check-prefix=OBJ %s
; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s
; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | \ ; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj < %s 2>&1 | \
; RUN: FileCheck --check-prefix=XCOFF64 %s ; RUN: FileCheck --check-prefix=XCOFF64 %s
; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. ; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.

View File

@ -1,10 +1,13 @@
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,ASM32 %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,ASM64 %s ; RUN: FileCheck --check-prefixes=CHECK,ASM32 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: FileCheck --check-prefixes=CHECK,ASM64 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj -r --expand-relocs -t %t.o | FileCheck --check-prefixes=RELOC,SYM %s ; RUN: llvm-readobj -r --expand-relocs -t %t.o | FileCheck --check-prefixes=RELOC,SYM %s
; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | \ ; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff \
; RUN: -data-sections=false -filetype=obj < %s 2>&1 | \
; RUN: FileCheck --check-prefix=XCOFF64 %s ; RUN: FileCheck --check-prefix=XCOFF64 %s
; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. ; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.

View File

@ -1,8 +1,10 @@
; This file tests the codegen of mergeable const in AIX assembly. ; This file tests the codegen of mergeable const in AIX assembly.
; This file also tests mergeable const in XCOFF object file generation. ; This file also tests mergeable const in XCOFF object file generation.
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,CHECK32 %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,CHECK64 %s ; RUN: FileCheck --check-prefixes=CHECK,CHECK32 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: FileCheck --check-prefixes=CHECK,CHECK64 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s
; RUN: llvm-readobj -syms %t.o | FileCheck --check-prefix=CHECKSYM %s ; RUN: llvm-readobj -syms %t.o | FileCheck --check-prefix=CHECKSYM %s

View File

@ -4,11 +4,11 @@
; tests for XCOFF object files. ; tests for XCOFF object files.
; RUN: llc -verify-machineinstrs -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mcpu=pwr4 \
; RUN: -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s ; RUN: -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mcpu=pwr4 \
; RUN: -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck %s ; RUN: -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s
@magic16 = private unnamed_addr constant [4 x i16] [i16 264, i16 272, i16 213, i16 0], align 2 @magic16 = private unnamed_addr constant [4 x i16] [i16 264, i16 272, i16 213, i16 0], align 2

View File

@ -1,4 +1,4 @@
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -mattr=-altivec -filetype=obj -o %t.o < %s ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --section-headers --file-header %t.o | \ ; RUN: llvm-readobj --section-headers --file-header %t.o | \
; RUN: FileCheck --check-prefix=OBJ %s ; RUN: FileCheck --check-prefix=OBJ %s
; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck --check-prefix=RELOC %s ; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck --check-prefix=RELOC %s
@ -6,7 +6,7 @@
; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s
; RUN: llvm-objdump -r %t.o | FileCheck --check-prefix=DIS_REL %s ; RUN: llvm-objdump -r %t.o | FileCheck --check-prefix=DIS_REL %s
; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -mattr=-altivec -filetype=obj < %s 2>&1 | \ ; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -mattr=-altivec -data-sections=false -filetype=obj < %s 2>&1 | \
; RUN: FileCheck --check-prefix=XCOFF64 %s ; RUN: FileCheck --check-prefix=XCOFF64 %s
; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. ; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.

View File

@ -1,13 +1,15 @@
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,CHECK32 %s ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck --check-prefixes=CHECK,CHECK64 %s ; RUN: FileCheck --check-prefixes=CHECK,CHECK32 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: FileCheck --check-prefixes=CHECK,CHECK64 %s
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-readobj --section-headers --file-header %t.o | \ ; RUN: llvm-readobj --section-headers --file-header %t.o | \
; RUN: FileCheck --check-prefix=OBJ %s ; RUN: FileCheck --check-prefix=OBJ %s
; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s
; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s
; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -filetype=obj < %s 2>&1 | \ ; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj < %s 2>&1 | \
; RUN: FileCheck --check-prefix=XCOFF64 %s ; RUN: FileCheck --check-prefix=XCOFF64 %s
; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. ; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.

View File

@ -4,11 +4,11 @@
;; tests for 64-bit mode are omitted. ;; tests for 64-bit mode are omitted.
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec < %s | \ ; RUN: -mattr=-altivec -data-sections=false < %s | \
; RUN: FileCheck --check-prefix=ASM %s ; RUN: FileCheck --check-prefix=ASM %s
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
; RUN: -mattr=-altivec -filetype=obj -o %t.o < %s ; RUN: -mattr=-altivec -data-sections=false -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D -r --symbol-description %t.o | \ ; RUN: llvm-objdump -D -r --symbol-description %t.o | \
; RUN: FileCheck --check-prefix=OBJ %s ; RUN: FileCheck --check-prefix=OBJ %s

View File

@ -1,10 +1,10 @@
;; This test verifies llc on AIX would not crash when llvm.used and ;; This test verifies llc on AIX would not crash when llvm.used and
;; llvm.compiler.used is presented in the IR. ;; llvm.compiler.used is presented in the IR.
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff < %s | \ ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: FileCheck %s ; RUN: FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff < %s | \ ; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | \
; RUN: FileCheck %s ; RUN: FileCheck %s
@keep_this = internal global i32 2, align 4 @keep_this = internal global i32 2, align 4

View File

@ -1,6 +1,6 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec < %s | \ ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec -data-sections=false < %s | \
; RUN: FileCheck %s ; RUN: FileCheck %s
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec < %s |\ ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 -mattr=-altivec -data-sections=false < %s |\
; RUN: FileCheck %s ; RUN: FileCheck %s
@b = global i32 0, align 4 @b = global i32 0, align 4

View File

@ -852,7 +852,7 @@ static std::unique_ptr<LTO> createLTO(IndexWriteCallback OnIndexWrite,
ThinBackend Backend; ThinBackend Backend;
Conf.CPU = options::mcpu; Conf.CPU = options::mcpu;
Conf.Options = codegen::InitTargetOptionsFromCodeGenFlags(); Conf.Options = codegen::InitTargetOptionsFromCodeGenFlags(Triple());
// Disable the new X86 relax relocations since gold might not support them. // Disable the new X86 relax relocations since gold might not support them.
// FIXME: Check the gold version or add a new option to enable them. // FIXME: Check the gold version or add a new option to enable them.

View File

@ -426,7 +426,7 @@ static int compileModule(char **argv, LLVMContext &Context) {
TargetOptions Options; TargetOptions Options;
auto InitializeOptions = [&](const Triple &TheTriple) { auto InitializeOptions = [&](const Triple &TheTriple) {
Options = codegen::InitTargetOptionsFromCodeGenFlags(); Options = codegen::InitTargetOptionsFromCodeGenFlags(TheTriple);
Options.DisableIntegratedAS = NoIntegratedAssembler; Options.DisableIntegratedAS = NoIntegratedAssembler;
Options.MCOptions.ShowMCEncoding = ShowMCEncoding; Options.MCOptions.ShowMCEncoding = ShowMCEncoding;
Options.MCOptions.MCUseDwarfDirectory = EnableDwarfDirectory; Options.MCOptions.MCUseDwarfDirectory = EnableDwarfDirectory;

View File

@ -476,7 +476,8 @@ int main(int argc, char **argv, char * const *envp) {
builder.setOptLevel(getOptLevel()); builder.setOptLevel(getOptLevel());
TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple(TargetTriple));
if (codegen::getFloatABIForCalls() != FloatABI::Default) if (codegen::getFloatABIForCalls() != FloatABI::Default)
Options.FloatABIType = codegen::getFloatABIForCalls(); Options.FloatABIType = codegen::getFloatABIForCalls();

View File

@ -158,7 +158,7 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(int *argc,
case '3': OLvl = CodeGenOpt::Aggressive; break; case '3': OLvl = CodeGenOpt::Aggressive; break;
} }
TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(TheTriple);
TM.reset(TheTarget->createTargetMachine( TM.reset(TheTarget->createTargetMachine(
TheTriple.getTriple(), CPUStr, FeaturesStr, Options, TheTriple.getTriple(), CPUStr, FeaturesStr, Options,
codegen::getExplicitRelocModel(), codegen::getExplicitCodeModel(), OLvl)); codegen::getExplicitRelocModel(), codegen::getExplicitCodeModel(), OLvl));

View File

@ -418,7 +418,7 @@ static void printMachOCPUOnly() {
LLVMContext Context; LLVMContext Context;
Context.setDiagnosticHandler(std::make_unique<LLVMLTODiagnosticHandler>(), Context.setDiagnosticHandler(std::make_unique<LLVMLTODiagnosticHandler>(),
true); true);
TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(Triple());
for (auto &Filename : InputFilenames) { for (auto &Filename : InputFilenames) {
ErrorOr<std::unique_ptr<LTOModule>> ModuleOrErr = ErrorOr<std::unique_ptr<LTOModule>> ModuleOrErr =
LTOModule::createFromFile(Context, Filename, Options); LTOModule::createFromFile(Context, Filename, Options);
@ -907,7 +907,7 @@ int main(int argc, char **argv) {
InitializeAllAsmParsers(); InitializeAllAsmParsers();
// set up the TargetOptions for the machine // set up the TargetOptions for the machine
TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(Triple());
if (ListSymbolsOnly) { if (ListSymbolsOnly) {
listSymbols(Options); listSymbols(Options);

View File

@ -230,7 +230,7 @@ static int run(int argc, char **argv) {
}; };
Conf.CPU = codegen::getMCPU(); Conf.CPU = codegen::getMCPU();
Conf.Options = codegen::InitTargetOptionsFromCodeGenFlags(); Conf.Options = codegen::InitTargetOptionsFromCodeGenFlags(Triple());
Conf.MAttrs = codegen::getMAttrs(); Conf.MAttrs = codegen::getMAttrs();
if (auto RM = codegen::getExplicitRelocModel()) if (auto RM = codegen::getExplicitRelocModel())
Conf.RelocModel = RM.getValue(); Conf.RelocModel = RM.getValue();

View File

@ -224,7 +224,8 @@ extern "C" LLVM_ATTRIBUTE_USED int LLVMFuzzerInitialize(
exit(1); exit(1);
} }
TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(TargetTriple);
TM.reset(TheTarget->createTargetMachine( TM.reset(TheTarget->createTargetMachine(
TargetTriple.getTriple(), codegen::getCPUStr(), codegen::getFeaturesStr(), TargetTriple.getTriple(), codegen::getCPUStr(), codegen::getFeaturesStr(),
Options, codegen::getExplicitRelocModel(), Options, codegen::getExplicitRelocModel(),

View File

@ -218,7 +218,8 @@ lto_module_is_object_file_in_memory_for_target(const void* mem,
lto_module_t lto_module_create(const char* path) { lto_module_t lto_module_create(const char* path) {
lto_initialize(); lto_initialize();
llvm::TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); llvm::TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple());
ErrorOr<std::unique_ptr<LTOModule>> M = ErrorOr<std::unique_ptr<LTOModule>> M =
LTOModule::createFromFile(*LTOContext, StringRef(path), Options); LTOModule::createFromFile(*LTOContext, StringRef(path), Options);
if (!M) if (!M)
@ -228,7 +229,8 @@ lto_module_t lto_module_create(const char* path) {
lto_module_t lto_module_create_from_fd(int fd, const char *path, size_t size) { lto_module_t lto_module_create_from_fd(int fd, const char *path, size_t size) {
lto_initialize(); lto_initialize();
llvm::TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); llvm::TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple());
ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromOpenFile( ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromOpenFile(
*LTOContext, fd, StringRef(path), size, Options); *LTOContext, fd, StringRef(path), size, Options);
if (!M) if (!M)
@ -241,7 +243,8 @@ lto_module_t lto_module_create_from_fd_at_offset(int fd, const char *path,
size_t map_size, size_t map_size,
off_t offset) { off_t offset) {
lto_initialize(); lto_initialize();
llvm::TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); llvm::TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple());
ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromOpenFileSlice( ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromOpenFileSlice(
*LTOContext, fd, StringRef(path), map_size, offset, Options); *LTOContext, fd, StringRef(path), map_size, offset, Options);
if (!M) if (!M)
@ -251,7 +254,8 @@ lto_module_t lto_module_create_from_fd_at_offset(int fd, const char *path,
lto_module_t lto_module_create_from_memory(const void* mem, size_t length) { lto_module_t lto_module_create_from_memory(const void* mem, size_t length) {
lto_initialize(); lto_initialize();
llvm::TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); llvm::TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple());
ErrorOr<std::unique_ptr<LTOModule>> M = ErrorOr<std::unique_ptr<LTOModule>> M =
LTOModule::createFromBuffer(*LTOContext, mem, length, Options); LTOModule::createFromBuffer(*LTOContext, mem, length, Options);
if (!M) if (!M)
@ -263,7 +267,8 @@ lto_module_t lto_module_create_from_memory_with_path(const void* mem,
size_t length, size_t length,
const char *path) { const char *path) {
lto_initialize(); lto_initialize();
llvm::TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); llvm::TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple());
ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromBuffer( ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromBuffer(
*LTOContext, mem, length, Options, StringRef(path)); *LTOContext, mem, length, Options, StringRef(path));
if (!M) if (!M)
@ -274,7 +279,8 @@ lto_module_t lto_module_create_from_memory_with_path(const void* mem,
lto_module_t lto_module_create_in_local_context(const void *mem, size_t length, lto_module_t lto_module_create_in_local_context(const void *mem, size_t length,
const char *path) { const char *path) {
lto_initialize(); lto_initialize();
llvm::TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); llvm::TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple());
// Create a local context. Ownership will be transferred to LTOModule. // Create a local context. Ownership will be transferred to LTOModule.
std::unique_ptr<LLVMContext> Context = std::make_unique<LLVMContext>(); std::unique_ptr<LLVMContext> Context = std::make_unique<LLVMContext>();
@ -293,7 +299,8 @@ lto_module_t lto_module_create_in_codegen_context(const void *mem,
const char *path, const char *path,
lto_code_gen_t cg) { lto_code_gen_t cg) {
lto_initialize(); lto_initialize();
llvm::TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); llvm::TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(Triple());
ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromBuffer( ErrorOr<std::unique_ptr<LTOModule>> M = LTOModule::createFromBuffer(
unwrap(cg)->getContext(), mem, length, Options, StringRef(path)); unwrap(cg)->getContext(), mem, length, Options, StringRef(path));
return wrap(M->release()); return wrap(M->release());
@ -356,7 +363,7 @@ void lto_codegen_set_diagnostic_handler(lto_code_gen_t cg,
static lto_code_gen_t createCodeGen(bool InLocalContext) { static lto_code_gen_t createCodeGen(bool InLocalContext) {
lto_initialize(); lto_initialize();
TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(Triple());
LibLTOCodeGenerator *CodeGen = LibLTOCodeGenerator *CodeGen =
InLocalContext ? new LibLTOCodeGenerator(std::make_unique<LLVMContext>()) InLocalContext ? new LibLTOCodeGenerator(std::make_unique<LLVMContext>())
@ -507,7 +514,8 @@ void lto_codegen_set_should_embed_uselists(lto_code_gen_t cg,
thinlto_code_gen_t thinlto_create_codegen(void) { thinlto_code_gen_t thinlto_create_codegen(void) {
lto_initialize(); lto_initialize();
ThinLTOCodeGenerator *CodeGen = new ThinLTOCodeGenerator(); ThinLTOCodeGenerator *CodeGen = new ThinLTOCodeGenerator();
CodeGen->setTargetOptions(codegen::InitTargetOptionsFromCodeGenFlags()); CodeGen->setTargetOptions(
codegen::InitTargetOptionsFromCodeGenFlags(Triple()));
CodeGen->setFreestanding(EnableFreestanding); CodeGen->setFreestanding(EnableFreestanding);
if (OptLevel.getNumOccurrences()) { if (OptLevel.getNumOccurrences()) {

View File

@ -698,7 +698,8 @@ int main(int argc, char **argv) {
Triple ModuleTriple(M->getTargetTriple()); Triple ModuleTriple(M->getTargetTriple());
std::string CPUStr, FeaturesStr; std::string CPUStr, FeaturesStr;
TargetMachine *Machine = nullptr; TargetMachine *Machine = nullptr;
const TargetOptions Options = codegen::InitTargetOptionsFromCodeGenFlags(); const TargetOptions Options =
codegen::InitTargetOptionsFromCodeGenFlags(ModuleTriple);
if (ModuleTriple.getArch()) { if (ModuleTriple.getArch()) {
CPUStr = codegen::getCPUStr(); CPUStr = codegen::getCPUStr();