summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2016-01-13 01:18:13 +0000
committerMatthias Braun <matze@braunis.de>2016-01-13 01:18:13 +0000
commit4cc3421a24b567b94265d9a5c77f816fa3afb53b (patch)
treeb2e9a84c30373cb93359b4fb0951b12700c9ee36
parent3eaaf86397a6aee6336bdb101ddcd7bff3f4d37a (diff)
downloadbcm5719-llvm-4cc3421a24b567b94265d9a5c77f816fa3afb53b.tar.gz
bcm5719-llvm-4cc3421a24b567b94265d9a5c77f816fa3afb53b.zip
AsmPrinter: Fix wrong OS X versions being emitted for darwin triples
The version numbers of the darwin kernel are different from the version numbers of OS X, so we need adjustments if we had "*-*-darwin" triples. Use the existing utility functions in TargetTriple for this. Fixes rdar://22056966 Differential Revision: http://reviews.llvm.org/D14601 llvm-svn: 257555
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp32
-rw-r--r--llvm/test/CodeGen/X86/2008-11-03-F80VAARG.ll4
-rw-r--r--llvm/test/CodeGen/X86/version_directive.ll4
3 files changed, 25 insertions, 15 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index be7eafbeb83..5f67d3daa97 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -192,22 +192,26 @@ bool AsmPrinter::doInitialization(Module &M) {
// use the directive, where it would need the same conditionalization
// anyway.
Triple TT(getTargetTriple());
- if (TT.isOSDarwin()) {
+ // If there is a version specified, Major will be non-zero.
+ if (TT.isOSDarwin() && TT.getOSMajorVersion() != 0) {
unsigned Major, Minor, Update;
- TT.getOSVersion(Major, Minor, Update);
- // If there is a version specified, Major will be non-zero.
- if (Major) {
- MCVersionMinType VersionType;
- if (TT.isWatchOS())
- VersionType = MCVM_WatchOSVersionMin;
- else if (TT.isTvOS())
- VersionType = MCVM_TvOSVersionMin;
- else if (TT.isMacOSX())
- VersionType = MCVM_OSXVersionMin;
- else
- VersionType = MCVM_IOSVersionMin;
- OutStreamer->EmitVersionMin(VersionType, Major, Minor, Update);
+ MCVersionMinType VersionType;
+ if (TT.isWatchOS()) {
+ VersionType = MCVM_WatchOSVersionMin;
+ TT.getWatchOSVersion(Major, Minor, Update);
+ } else if (TT.isTvOS()) {
+ VersionType = MCVM_TvOSVersionMin;
+ TT.getiOSVersion(Major, Minor, Update);
+ } else if (TT.isMacOSX()) {
+ VersionType = MCVM_OSXVersionMin;
+ if (!TT.getMacOSXVersion(Major, Minor, Update))
+ Major = 0;
+ } else {
+ VersionType = MCVM_IOSVersionMin;
+ TT.getiOSVersion(Major, Minor, Update);
}
+ if (Major != 0)
+ OutStreamer->EmitVersionMin(VersionType, Major, Minor, Update);
}
// Allow the target to emit any magic that it wants at the start of the file.
diff --git a/llvm/test/CodeGen/X86/2008-11-03-F80VAARG.ll b/llvm/test/CodeGen/X86/2008-11-03-F80VAARG.ll
index 507799b7304..97c046c8642 100644
--- a/llvm/test/CodeGen/X86/2008-11-03-F80VAARG.ll
+++ b/llvm/test/CodeGen/X86/2008-11-03-F80VAARG.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86 -o - | not grep 10
+; RUN: llc < %s -march=x86 -o - | FileCheck %s
declare void @llvm.va_start(i8*) nounwind
@@ -6,6 +6,8 @@ declare void @llvm.va_copy(i8*, i8*) nounwind
declare void @llvm.va_end(i8*) nounwind
+; CHECK-LABEL: test:
+; CHECK-NOT: 10
define x86_fp80 @test(...) nounwind {
%ap = alloca i8* ; <i8**> [#uses=3]
%v1 = bitcast i8** %ap to i8* ; <i8*> [#uses=1]
diff --git a/llvm/test/CodeGen/X86/version_directive.ll b/llvm/test/CodeGen/X86/version_directive.ll
new file mode 100644
index 00000000000..8e4e6dc70e6
--- /dev/null
+++ b/llvm/test/CodeGen/X86/version_directive.ll
@@ -0,0 +1,4 @@
+; RUN: llc -mtriple x86_64-apple-darwin15.0.0 -o - /dev/null | FileCheck %s
+; RUN: llc -mtriple x86_64-apple-macosx10.11.0 -o - /dev/null | FileCheck %s
+
+; CHECK: .macosx_version_min 10, 11
OpenPOWER on IntegriCloud