rework build flags [release 9.0.1-4mamba;Sat Feb 08 2020]

This commit is contained in:
Silvan Calarco 2024-01-06 06:26:11 +01:00
parent 1a3da34681
commit 1e0d217566
14 changed files with 64 additions and 775 deletions

View File

@ -1,23 +0,0 @@
diff -Nru llvm-3.4.orig/tools/clang/lib/Driver/Tools.cpp llvm-3.4/tools/clang/lib/Driver/Tools.cpp
--- llvm-3.4.orig/clang-3.4/lib/Driver/Tools.cpp 2013-12-09 03:59:27.000000000 +0100
+++ llvm-3.4/clang-3.4/lib/Driver/Tools.cpp 2014-02-17 10:53:55.496716319 +0100
@@ -1309,7 +1309,7 @@
}
// All x86 devices running Android have core2 as their common
- // denominator. This makes a better choice than pentium4.
+ // denominator. This makes a better choice than i586.
if (Triple.getEnvironment() == llvm::Triple::Android)
return "core2";
@@ -1327,8 +1327,8 @@
case llvm::Triple::Bitrig:
return "i686";
default:
- // Fallback to p4.
- return "pentium4";
+ // Fallback to i586.
+ return "i586";
}
}

View File

@ -1,28 +0,0 @@
Index: llvm-toolchain-snapshot-3.5~svn211313/tools/bugpoint/Makefile
===================================================================
--- llvm-toolchain-snapshot-3.5~svn211313.orig/tools/bugpoint/Makefile
+++ llvm-toolchain-snapshot-3.5~svn211313/tools/bugpoint/Makefile
@@ -12,6 +12,9 @@ TOOLNAME := bugpoint
LINK_COMPONENTS := asmparser instrumentation scalaropts ipo linker bitreader \
bitwriter irreader vectorize objcarcopts codegen
+# Crappy workaround to make sure it links correctly.
+LLVMLibsOptions := ../../lib/IR/Release*/Pass.o
+
# Support plugins.
NO_DEAD_STRIP := 1
Index: llvm-toolchain-snapshot-3.5~svn211313/tools/opt/Makefile
===================================================================
--- llvm-toolchain-snapshot-3.5~svn211313.orig/tools/opt/Makefile
+++ llvm-toolchain-snapshot-3.5~svn211313/tools/opt/Makefile
@@ -10,7 +10,9 @@
LEVEL := ../..
TOOLNAME := opt
LINK_COMPONENTS := bitreader bitwriter asmparser irreader instrumentation scalaropts objcarcopts ipo vectorize all-targets codegen
+# Crappy workaround to make sure it links correctly.
+LLVMLibsOptions := ../../lib/IR/Release*/Pass.o
# Support plugins.
NO_DEAD_STRIP := 1

View File

@ -1,31 +0,0 @@
--- llvm-3.5.0.src.orig/tools/llvm-config/llvm-config.cpp 2014-09-10 15:06:29.305956568 +0200
+++ llvm-3.5.0.src/tools/llvm-config/llvm-config.cpp 2014-09-19 00:41:14.963576743 +0200
@@ -243,16 +243,16 @@
case MakefileStyle:
ActivePrefix = ActiveObjRoot;
ActiveBinDir = ActiveObjRoot + "/" + build_mode + "/bin";
- ActiveLibDir = ActiveObjRoot + "/" + build_mode + "/lib";
+ ActiveLibDir = ActiveObjRoot + "/" + build_mode + "/lib/llvm";
break;
case CMakeStyle:
ActiveBinDir = ActiveObjRoot + "/bin";
- ActiveLibDir = ActiveObjRoot + "/lib";
+ ActiveLibDir = ActiveObjRoot + "/lib/llvm";
break;
case CMakeBuildModeStyle:
ActivePrefix = ActiveObjRoot;
ActiveBinDir = ActiveObjRoot + "/bin/" + build_mode;
- ActiveLibDir = ActiveObjRoot + "/lib/" + build_mode;
+ ActiveLibDir = ActiveObjRoot + "/lib/llvm" + build_mode;
break;
}
@@ -263,7 +263,7 @@
ActivePrefix = CurrentExecPrefix;
ActiveIncludeDir = ActivePrefix + "/include";
ActiveBinDir = ActivePrefix + "/bin";
- ActiveLibDir = ActivePrefix + "/lib";
+ ActiveLibDir = ActivePrefix + "/lib/llvm";
ActiveIncludeOption = "-I" + ActiveIncludeDir;
}

View File

@ -1,31 +0,0 @@
--- llvm-3.5.0.src.orig/tools/llvm-config/llvm-config.cpp 2014-09-10 15:06:29.305956568 +0200
+++ llvm-3.5.0.src/tools/llvm-config/llvm-config.cpp 2014-09-19 00:41:14.963576743 +0200
@@ -243,16 +243,16 @@
case MakefileStyle:
ActivePrefix = ActiveObjRoot;
ActiveBinDir = ActiveObjRoot + "/" + build_mode + "/bin";
- ActiveLibDir = ActiveObjRoot + "/" + build_mode + "/lib";
+ ActiveLibDir = ActiveObjRoot + "/" + build_mode + "/lib64/llvm";
break;
case CMakeStyle:
ActiveBinDir = ActiveObjRoot + "/bin";
- ActiveLibDir = ActiveObjRoot + "/lib";
+ ActiveLibDir = ActiveObjRoot + "/lib64/llvm";
break;
case CMakeBuildModeStyle:
ActivePrefix = ActiveObjRoot;
ActiveBinDir = ActiveObjRoot + "/bin/" + build_mode;
- ActiveLibDir = ActiveObjRoot + "/lib/" + build_mode;
+ ActiveLibDir = ActiveObjRoot + "/lib64/llvm" + build_mode;
break;
}
@@ -263,7 +263,7 @@
ActivePrefix = CurrentExecPrefix;
ActiveIncludeDir = ActivePrefix + "/include";
ActiveBinDir = ActivePrefix + "/bin";
- ActiveLibDir = ActivePrefix + "/lib";
+ ActiveLibDir = ActivePrefix + "/lib64/llvm";
ActiveIncludeOption = "-I" + ActiveIncludeDir;
}

View File

@ -1,26 +0,0 @@
Description: Silent a test failing on yakkety amd64
/tmp/buildd/llvm-toolchain-snapshot-4.0~svn279801/test/tools/llvm-symbolizer/print_context.c:16:11: error: expected string not found in input
// CHECK: inc
^
<stdin>:1:1: note: scanning from here
_fini
^
<stdin>:1:3: note: possible intended match here
_fini
^
Author: Sylvestre <sylvestre@debian.org>
Last-Update: 2016-08-26
Index: llvm-toolchain-3.9-3.9~+rc1/test/tools/llvm-symbolizer/print_context.c
===================================================================
--- llvm-toolchain-3.9-3.9~+rc1.orig/test/tools/llvm-symbolizer/print_context.c
+++ llvm-toolchain-3.9-3.9~+rc1/test/tools/llvm-symbolizer/print_context.c
@@ -1,7 +1,7 @@
// REQUIRES: x86_64-linux
// RUN: %host_cc -O0 -g %s -o %t 2>&1
// RUN: %t 2>&1 | llvm-symbolizer -print-source-context-lines=5 -obj=%t | FileCheck %s
-
+// XFAIL: *
#include <stdio.h>
int inc(int a) {

View File

@ -1,12 +0,0 @@
--- llvm-5.0.0.src/tools/llvm-shlib/CMakeLists.txt.orig 2017-11-28 10:25:33.606319245 +0100
+++ llvm-5.0.0.src/tools/llvm-shlib/CMakeLists.txt 2017-11-28 10:24:41.439227412 +0100
@@ -36,7 +36,9 @@
add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
+if(LIB_NAMES)
list(REMOVE_DUPLICATES LIB_NAMES)
+endif()
if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")) # FIXME: It should be "GNU ld for elf"
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/simple_version_script.map.in

View File

@ -1,36 +0,0 @@
From 4d613a84ce271c6225068bef67d727ae02b2e3b1 Mon Sep 17 00:00:00 2001
From: Pavel Labath <labath@google.com>
Date: Wed, 14 Mar 2018 09:28:38 +0000
Subject: [PATCH] Export LLVM_DYLIB_COMPONENTS in LLVMConfig.cmake
Summary:
This is needed so that external projects (e.g. a standalone build of
lldb) can link to the LLVM shared library via the USE_SHARED argument of
llvm_config. Without this, llvm_config would add LLVM to the link list,
but then also add the constituent static libraries, resulting in
multiply defined symbols.
Reviewers: beanz, mgorny
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D44391
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327484 91177308-0d34-0410-b5e6-96231b3b80d8
---
cmake/modules/LLVMConfig.cmake.in | 2 ++
1 file changed, 2 insertions(+)
diff --git a/cmake/modules/LLVMConfig.cmake.in b/cmake/modules/LLVMConfig.cmake.in
index fe4df5278498..e70018679846 100644
--- a/cmake/modules/LLVMConfig.cmake.in
+++ b/cmake/modules/LLVMConfig.cmake.in
@@ -13,6 +13,8 @@ set(LLVM_COMMON_DEPENDS @LLVM_COMMON_DEPENDS@)
set(LLVM_AVAILABLE_LIBS @LLVM_AVAILABLE_LIBS@)
+set(LLVM_DYLIB_COMPONENTS @LLVM_DYLIB_COMPONENTS@)
+
set(LLVM_ALL_TARGETS @LLVM_ALL_TARGETS@)
set(LLVM_TARGETS_TO_BUILD @LLVM_TARGETS_TO_BUILD@)

View File

@ -1,262 +0,0 @@
From 783006ec19853403b8fe799e4c1b9496cb03504a Mon Sep 17 00:00:00 2001
From: Bjorn Pettersson <bjorn.a.pettersson@ericsson.com>
Date: Tue, 6 Mar 2018 08:47:07 +0000
Subject: [PATCH] [DebugInfo] Discard invalid DBG_VALUE instructions in
LiveDebugVariables
Summary:
This is a workaround for pr36417
https://bugs.llvm.org/show_bug.cgi?id=36417
LiveDebugVariables will now verify that the DBG_VALUE instructions
are sane (prior to register allocation) by asking LIS if a virtual
register used in the DBG_VALUE is live (or dead def) in the slot
index before the DBG_VALUE. If it isn't sane the DBG_VALUE is
discarded.
One pass that was identified as introducing non-sane DBG_VALUE
instructtons, when analysing pr36417, was the DAG->DAG Instruction
Selection. It sometimes inserts DBG_VALUE instructions referring to
a virtual register that is defined later in the same basic block.
So it is a use before def kind of problem. The DBG_VALUE is
typically inserted in the beginning of a basic block when this
happens. The problem can be seen in the test case
test/DebugInfo/X86/dbg-value-inlined-parameter.ll
Reviewers: aprantl, rnk, probinson
Reviewed By: aprantl
Subscribers: vsk, davide, alexcrichton, Ka-Ka, eraman, llvm-commits, JDevlieghere
Differential Revision: https://reviews.llvm.org/D43956
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@326769 91177308-0d34-0410-b5e6-96231b3b80d8
---
lib/CodeGen/LiveDebugVariables.cpp | 38 +++++-
test/DebugInfo/X86/dbg-value-inlined-parameter.ll | 6 +-
.../X86/live-debug-vars-discard-invalid.mir | 141 +++++++++++++++++++++
3 files changed, 181 insertions(+), 4 deletions(-)
create mode 100644 test/DebugInfo/X86/live-debug-vars-discard-invalid.mir
diff --git a/lib/CodeGen/LiveDebugVariables.cpp b/lib/CodeGen/LiveDebugVariables.cpp
index 09168b6b9309..f3fcd004defd 100644
--- a/lib/CodeGen/LiveDebugVariables.cpp
+++ b/lib/CodeGen/LiveDebugVariables.cpp
@@ -514,6 +514,39 @@ bool LDVImpl::handleDebugValue(MachineInstr &MI, SlotIndex Idx) {
return false;
}
+ // Detect invalid DBG_VALUE instructions, with a debug-use of a virtual
+ // register that hasn't been defined yet. If we do not remove those here, then
+ // the re-insertion of the DBG_VALUE instruction after register allocation
+ // will be incorrect.
+ // TODO: If earlier passes are corrected to generate sane debug information
+ // (and if the machine verifier is improved to catch this), then these checks
+ // could be removed or replaced by asserts.
+ bool Discard = false;
+ if (MI.getOperand(0).isReg() &&
+ TargetRegisterInfo::isVirtualRegister(MI.getOperand(0).getReg())) {
+ const unsigned Reg = MI.getOperand(0).getReg();
+ if (!LIS->hasInterval(Reg)) {
+ // The DBG_VALUE is described by a virtual register that does not have a
+ // live interval. Discard the DBG_VALUE.
+ Discard = true;
+ DEBUG(dbgs() << "Discarding debug info (no LIS interval): "
+ << Idx << " " << MI);
+ } else {
+ // The DBG_VALUE is only valid if either Reg is live out from Idx, or Reg
+ // is defined dead at Idx (where Idx is the slot index for the instruction
+ // preceeding the DBG_VALUE).
+ const LiveInterval &LI = LIS->getInterval(Reg);
+ LiveQueryResult LRQ = LI.Query(Idx);
+ if (!LRQ.valueOutOrDead()) {
+ // We have found a DBG_VALUE with the value in a virtual register that
+ // is not live. Discard the DBG_VALUE.
+ Discard = true;
+ DEBUG(dbgs() << "Discarding debug info (reg not live): "
+ << Idx << " " << MI);
+ }
+ }
+ }
+
// Get or create the UserValue for (variable,offset) here.
bool IsIndirect = MI.getOperand(1).isImm();
if (IsIndirect)
@@ -522,7 +555,10 @@ bool LDVImpl::handleDebugValue(MachineInstr &MI, SlotIndex Idx) {
const DIExpression *Expr = MI.getDebugExpression();
UserValue *UV =
getUserValue(Var, Expr, MI.getDebugLoc());
- UV->addDef(Idx, MI.getOperand(0), IsIndirect);
+ if (!Discard)
+ UV->addDef(Idx, MI.getOperand(0), IsIndirect);
+ else
+ UV->addDef(Idx, MachineOperand::CreateReg(0U, RegState::Debug), false);
return true;
}
diff --git a/test/DebugInfo/X86/dbg-value-inlined-parameter.ll b/test/DebugInfo/X86/dbg-value-inlined-parameter.ll
index 9954039654bb..e83cf0aa7ffd 100644
--- a/test/DebugInfo/X86/dbg-value-inlined-parameter.ll
+++ b/test/DebugInfo/X86/dbg-value-inlined-parameter.ll
@@ -32,10 +32,10 @@
;CHECK-NEXT: DW_AT_call_line
;CHECK: DW_TAG_formal_parameter
-;FIXME: Linux shouldn't drop this parameter either...
;CHECK-NOT: DW_TAG
-;DARWIN: DW_AT_abstract_origin {{.*}} "sp"
-;DARWIN: DW_TAG_formal_parameter
+;FIXME: Shouldn't drop this parameter...
+;XCHECK: DW_AT_abstract_origin {{.*}} "sp"
+;XCHECK: DW_TAG_formal_parameter
;CHECK: DW_AT_abstract_origin {{.*}} "nums"
;CHECK-NOT: DW_TAG_formal_parameter
diff --git a/test/DebugInfo/X86/live-debug-vars-discard-invalid.mir b/test/DebugInfo/X86/live-debug-vars-discard-invalid.mir
new file mode 100644
index 000000000000..abc21bc6ac90
--- /dev/null
+++ b/test/DebugInfo/X86/live-debug-vars-discard-invalid.mir
@@ -0,0 +1,141 @@
+# RUN: llc -mtriple=x86_64-linux-gnu -start-before greedy -stop-after virtregrewriter -o - %s | FileCheck %s
+
+--- |
+ ; ModuleID = '<stdin>'
+ source_filename = "test/DebugInfo/X86/dbg-value-inlined-parameter.ll"
+ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
+ target triple = "x86_64-apple-darwin"
+
+ %struct.S1 = type { float*, i32 }
+
+ @p = common global %struct.S1 zeroinitializer, align 8, !dbg !0
+
+ ; Function Attrs: nounwind optsize ssp
+ define void @foobar() !dbg !15 {
+ entry:
+ tail call void @llvm.dbg.value(metadata %struct.S1* @p, metadata !18, metadata !DIExpression()) , !dbg !25
+ ret void, !dbg !32
+ }
+
+ ; Function Attrs: nounwind readnone speculatable
+ declare void @llvm.dbg.value(metadata, metadata, metadata) #2
+
+ !llvm.dbg.cu = !{!2}
+ !llvm.module.flags = !{!14}
+
+ !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+ !1 = !DIGlobalVariable(name: "p", scope: !2, file: !3, line: 14, type: !6, isLocal: false, isDefinition: true)
+ !2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang version 2.9 (trunk 125693)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !4, globals: !5, imports: !4)
+ !3 = !DIFile(filename: "nm2.c", directory: "/private/tmp")
+ !4 = !{}
+ !5 = !{!0}
+ !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "S1", scope: !2, file: !3, line: 4, baseType: !7)
+ !7 = !DICompositeType(tag: DW_TAG_structure_type, name: "S1", scope: !2, file: !3, line: 1, size: 128, align: 64, elements: !8)
+ !8 = !{!9, !12}
+ !9 = !DIDerivedType(tag: DW_TAG_member, name: "m", scope: !3, file: !3, line: 2, baseType: !10, size: 64, align: 64)
+ !10 = !DIDerivedType(tag: DW_TAG_pointer_type, scope: !2, baseType: !11, size: 64, align: 64)
+ !11 = !DIBasicType(name: "float", size: 32, align: 32, encoding: DW_ATE_float)
+ !12 = !DIDerivedType(tag: DW_TAG_member, name: "nums", scope: !3, file: !3, line: 3, baseType: !13, size: 32, align: 32, offset: 64)
+ !13 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
+ !14 = !{i32 1, !"Debug Info Version", i32 3}
+ !15 = distinct !DISubprogram(name: "foobar", scope: !3, file: !3, line: 15, type: !16, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !2)
+ !16 = !DISubroutineType(types: !17)
+ !17 = !{null}
+ !18 = !DILocalVariable(name: "sp", arg: 1, scope: !19, file: !3, line: 7, type: !24)
+ !19 = distinct !DISubprogram(name: "foo", scope: !3, file: !3, line: 8, type: !20, isLocal: false, isDefinition: true, scopeLine: 8, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !22)
+ !20 = !DISubroutineType(types: !21)
+ !21 = !{!13}
+ !22 = !{!18, !23}
+ !23 = !DILocalVariable(name: "nums", arg: 2, scope: !19, file: !3, line: 7, type: !13)
+ !24 = !DIDerivedType(tag: DW_TAG_pointer_type, scope: !2, baseType: !6, size: 64, align: 64)
+ !25 = !DILocation(line: 7, column: 13, scope: !19, inlinedAt: !26)
+ !26 = !DILocation(line: 16, column: 3, scope: !27)
+ !27 = distinct !DILexicalBlock(scope: !15, file: !3, line: 15, column: 15)
+ !32 = !DILocation(line: 17, column: 1, scope: !27)
+
+...
+---
+name: foobar
+tracksRegLiveness: true
+body: |
+ bb.0:
+ %1:gr64 = IMPLICIT_DEF
+ %2:gr64 = IMPLICIT_DEF
+
+ bb.1:
+ ; This DBG_VALUE will be discarded (use before def of %0).
+ DBG_VALUE debug-use %0, debug-use %noreg, !18, !DIExpression(), debug-location !25
+ %0:gr64 = IMPLICIT_DEF
+ %0:gr64 = IMPLICIT_DEF
+ %0:gr64 = IMPLICIT_DEF
+ %0:gr64 = IMPLICIT_DEF
+
+ bb.2:
+ ; This DBG_VALUE will be discarded (%1 is defined earlier, but it is not live in, so we do not know where %1 is stored).
+ DBG_VALUE debug-use %1, debug-use %noreg, !18, !DIExpression(), debug-location !25
+ %1:gr64 = IMPLICIT_DEF
+ %1:gr64 = IMPLICIT_DEF
+ %1:gr64 = IMPLICIT_DEF
+ %1:gr64 = IMPLICIT_DEF
+ ; This DBG_VALUE is kept, even if %1 is dead, it was defined in the prev instruction,
+ ; so the value should be available for as long as the register allocated to %1 is live.
+ DBG_VALUE debug-use %1, debug-use %noreg, !18, !DIExpression(), debug-location !25
+
+ bb.3:
+ %1:gr64 = IMPLICIT_DEF
+ DBG_VALUE 0, debug-use %noreg, !23, !DIExpression(), debug-location !25
+ ; This DBG_VALUE is kept, even if %1 is dead, it was defined in the prev non-dbg instruction,
+ ; so the value should be available for as long as the register allocated to %1 is live.
+ DBG_VALUE debug-use %1, debug-use %noreg, !18, !DIExpression(), debug-location !25
+
+ bb.4:
+ ; All DBG_VALUEs here should survive. %2 is livein as it was defined in bb.0, and it has use/def in the BTS64rr instruction.
+ DBG_VALUE debug-use %2, debug-use %noreg, !18, !DIExpression(), debug-location !25
+ %2:gr64 = BTS64rr %2, 0, implicit-def %eflags
+ DBG_VALUE 0, debug-use %noreg, !23, !DIExpression(), debug-location !25
+ DBG_VALUE debug-use %2, debug-use %noreg, !18, !DIExpression(), debug-location !25
+ %2:gr64 = BTS64rr %2, 0, implicit-def %eflags
+ DBG_VALUE debug-use %2, debug-use %noreg, !18, !DIExpression(), debug-location !25
+ %2:gr64 = BTS64rr %2, 0, implicit-def %eflags
+ DBG_VALUE debug-use %2, debug-use %noreg, !18, !DIExpression(), debug-location !25
+
+ bb.5:
+ RET 0, debug-location !32
+...
+
+# CHECK-LABEL: name: foobar
+
+# CHECK-LABEL: bb.1:
+## After solving https://bugs.llvm.org/show_bug.cgi?id=36579 we expect to get a
+## DBG_VALUE debug-use %noreg
+## here.
+# CHECK-NOT: DBG_VALUE
+
+# CHECK-LABEL: bb.2:
+## After solving https://bugs.llvm.org/show_bug.cgi?id=36579 we expect to get a
+## DBG_VALUE debug-use %noreg
+## here.
+# CHECK-NOT: DBG_VALUE
+# CHECK: dead renamable %rcx = IMPLICIT_DEF
+# CHECK-NEXT: dead renamable %rcx = IMPLICIT_DEF
+# CHECK-NEXT: dead renamable %rcx = IMPLICIT_DEF
+# CHECK-NEXT: dead renamable %rcx = IMPLICIT_DEF
+# CHECK-NEXT: DBG_VALUE debug-use %rcx, debug-use %noreg, !18, !DIExpression()
+
+# CHECK-LABEL: bb.3:
+# CHECK: dead renamable %rcx = IMPLICIT_DEF
+# CHECK-NEXT: DBG_VALUE 0, debug-use %noreg, !23, !DIExpression()
+# CHECK-NEXT: DBG_VALUE debug-use %rcx, debug-use %noreg, !18, !DIExpression()
+
+# CHECK-LABEL: bb.4:
+# CHECK: liveins: %rax
+# CHECK: DBG_VALUE debug-use %rax, debug-use %noreg, !18, !DIExpression()
+# CHECK-NEXT: renamable %rax = BTS64rr killed renamable %rax, 0, implicit-def %eflags
+# CHECK-NEXT: DBG_VALUE 0, debug-use %noreg, !23, !DIExpression()
+# CHECK-NEXT: DBG_VALUE debug-use %rax, debug-use %noreg, !18, !DIExpression()
+# CHECK-NEXT: renamable %rax = BTS64rr killed renamable %rax, 0, implicit-def %eflags
+# CHECK-NEXT: DBG_VALUE debug-use %rax, debug-use %noreg, !18, !DIExpression()
+# CHECK-NEXT: dead renamable %rax = BTS64rr killed renamable %rax, 0, implicit-def %eflags
+
+# CHECK-LABEL: bb.5:
+# CHECK-NEXT: RET 0

View File

@ -1,13 +0,0 @@
Index: cmake/modules/LLVM-Config.cmake
===================================================================
--- cmake/modules/LLVM-Config.cmake
+++ cmake/modules/LLVM-Config.cmake
@@ -68,7 +68,7 @@
cmake_parse_arguments(ARG "USE_SHARED" "" "" ${ARGN})
set(link_components ${ARG_UNPARSED_ARGUMENTS})
- if(USE_SHARED)
+ if(ARG_USE_SHARED)
# If USE_SHARED is specified, then we link against libLLVM,
# but also against the component libraries below. This is
# done in case libLLVM does not contain all of the components

View File

@ -1,28 +0,0 @@
From 7c9054610e354340f9474dcd13a927f929912d1d Mon Sep 17 00:00:00 2001
From: Eugene Zelenko <eugene.zelenko@gmail.com>
Date: Tue, 6 Mar 2018 23:06:13 +0000
Subject: [PATCH] [Transforms] Add missing header for InstructionCombining.cpp,
in order to export LLVMInitializeInstCombine as extern "C". Fixes PR35947.
Patch by Brenton Bostick.
Differential revision: https://reviews.llvm.org/D44140
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@326843 91177308-0d34-0410-b5e6-96231b3b80d8
---
lib/Transforms/InstCombine/InstructionCombining.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/Transforms/InstCombine/InstructionCombining.cpp b/lib/Transforms/InstCombine/InstructionCombining.cpp
index a3b2fe9e5d22..7ec73433e8f6 100644
--- a/lib/Transforms/InstCombine/InstructionCombining.cpp
+++ b/lib/Transforms/InstCombine/InstructionCombining.cpp
@@ -34,6 +34,7 @@
//===----------------------------------------------------------------------===//
#include "InstCombineInternal.h"
+#include "llvm-c/Initialization.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"

View File

@ -1,34 +0,0 @@
From 866cf8f3afa0224e31d36ca0351ac5cb0d303757 Mon Sep 17 00:00:00 2001
From: Bjorn Pettersson <bjorn.a.pettersson@ericsson.com>
Date: Tue, 6 Mar 2018 13:23:28 +0000
Subject: [PATCH] Fixup for rL326769 (RegState::Debug is being truncated to a
bool)
I obviously messed up arguments to MachineOperand::CreateReg
in rL326769. This should make it work as intended.
Thanks to RKSimon for spotting this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@326780 91177308-0d34-0410-b5e6-96231b3b80d8
---
lib/CodeGen/LiveDebugVariables.cpp | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/CodeGen/LiveDebugVariables.cpp b/lib/CodeGen/LiveDebugVariables.cpp
index f3fcd004defd..8c547cdcff33 100644
--- a/lib/CodeGen/LiveDebugVariables.cpp
+++ b/lib/CodeGen/LiveDebugVariables.cpp
@@ -557,8 +557,11 @@ bool LDVImpl::handleDebugValue(MachineInstr &MI, SlotIndex Idx) {
getUserValue(Var, Expr, MI.getDebugLoc());
if (!Discard)
UV->addDef(Idx, MI.getOperand(0), IsIndirect);
- else
- UV->addDef(Idx, MachineOperand::CreateReg(0U, RegState::Debug), false);
+ else {
+ MachineOperand MO = MachineOperand::CreateReg(0U, false);
+ MO.setIsDebug();
+ UV->addDef(Idx, MO, false);
+ }
return true;
}

View File

@ -1,27 +0,0 @@
--- llvm-8.0.0.src/tools/clang/lib/Driver/ToolChains/Gnu.cpp.orig 2019-01-15 22:04:36.000000000 +0100
+++ llvm-8.0.0.src/tools/clang/lib/Driver/ToolChains/Gnu.cpp 2019-03-26 15:46:18.841353843 +0100
@@ -1877,7 +1877,7 @@
"aarch64_be-linux-gnu"};
static const char *const ARMLibDirs[] = {"/lib"};
- static const char *const ARMTriples[] = {"arm-linux-gnueabi",
+ static const char *const ARMTriples[] = {"arm-openmamba-linux-gnueabi", "arm-linux-gnueabi",
"arm-linux-androideabi"};
static const char *const ARMHFTriples[] = {"arm-linux-gnueabihf",
"armv7hl-redhat-linux-gnueabi",
@@ -1891,6 +1891,7 @@
static const char *const X86_64LibDirs[] = {"/lib64", "/lib"};
static const char *const X86_64Triples[] = {
+ "x86_64-openmamba-linux-gnu",
"x86_64-linux-gnu", "x86_64-unknown-linux-gnu",
"x86_64-pc-linux-gnu", "x86_64-redhat-linux6E",
"x86_64-redhat-linux", "x86_64-suse-linux",
@@ -1900,6 +1901,7 @@
static const char *const X32LibDirs[] = {"/libx32"};
static const char *const X86LibDirs[] = {"/lib32", "/lib"};
static const char *const X86Triples[] = {
+ "i586-openmamba-linux-gnu",
"i686-linux-gnu", "i686-pc-linux-gnu", "i486-linux-gnu",
"i386-linux-gnu", "i386-redhat-linux6E", "i686-redhat-linux",
"i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux",

View File

@ -1,11 +0,0 @@
--- llvm-9.0.1.src/tools/lld/docs/conf.py.orig 2019-12-30 19:06:39.896000000 +0100
+++ llvm-9.0.1.src/tools/lld/docs/conf.py 2019-12-30 19:05:48.263000000 +0100
@@ -134,7 +134,7 @@
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
-html_sidebars = {'index': 'indexsidebar.html'}
+html_sidebars = {'index': ['indexsidebar.html']}
# Additional templates that should be rendered to pages, maps page names to
# template names.

277
llvm.spec
View File

@ -2,7 +2,7 @@
%define majver %(echo %version | cut -d. -f1-2)
Name: llvm
Version: 9.0.1
Release: 1mamba
Release: 4mamba
Summary: The Low Level Virtual Machine
Group: Development/Languages
Vendor: openmamba
@ -10,27 +10,9 @@ Distribution: openmamba
Packager: Davide Madrisan <davide.madrisan@gmail.com>
URL: https://llvm.org/
Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/llvm-%{version}.src.tar.xz
Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-%{version}.src.tar.xz
Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/compiler-rt-%{version}.src.tar.xz
Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-tools-extra-%{version}.src.tar.xz
Source4: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/lld-%{version}.src.tar.xz
Source5: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/lldb-%{version}.src.tar.xz
Source6: llvm-6.0.0-llvm-config.patch
Patch0: %{name}-3.1-llvm-config.patch
Patch1: llvm-3.4-default-to-i586.patch
Patch2: llvm-8.0.0-openmamba-triplet.patch
Patch3: llvm-3.5.0-buildfix-CommandLine_h-getOption.patch
Patch4: llvm-3.5.0-x86_64-llvm-config.patch
Patch5: llvm-3.5.0-llvm-config.patch
Patch6: llvm-3.8.0-ocamldoc-install.patch
Patch7: llvm-5.0.0-llvm-shlib-build-fix.patch
Patch8: llvm-5.0.0-disable-symbolizer-test.patch
Patch9: llvm-6.0.0--export-LLVM_DYLIB_COMPONENTS-in-LLVMConfig.cmake.patch
Patch10: llvm-6.0.0-cmake-fix-a-typo-in-llvm_config-macro.patch
Patch11: llvm-6.0.0-export-LLVMInitializeInstCombine-as-extern-C.patch
Patch12: llvm-6.0.0-DebugInfo-discard-invalid-DBG_VALUE-instructions.patch
Patch13: llvm-6.0.0-fixup-for-rL326769-RegState-Debug-is-being-truncated.patch
Patch14: llvm-9.0.1-Sphinx-2.3.1.patch
License: NCSA
## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel
@ -38,22 +20,24 @@ BuildRequires: libedit-devel
BuildRequires: libffi-devel
BuildRequires: libgcc
BuildRequires: libncurses-devel
BuildRequires: libperl
BuildRequires: libstdc++6-devel
BuildRequires: libxml2-devel
BuildRequires: libz-devel
BuildRequires: perl-devel
BuildRequires: libz3-devel
BuildRequires: ocaml-ctypes-devel
BuildRequires: ocaml-integers
BuildRequires: ocaml-runtime
## AUTOBUILDREQ-END
BuildRequires: gcc-c++ >= 8.1.0
BuildRequires: glibc-devel
BuildRequires: ocaml >= 4.09.0-4mamba
BuildRequires: ocaml-ctypes >= 0.16
BuildRequires: ocaml-ounit
BuildRequires: z3
BuildRequires: libz3-devel
#Requires: gcc >= %{gccver}
#Requires: gcc-c++ >= %{gccver}
BuildConflicts: llvm-ocaml
#BuildConflicts: llvm-ocaml
Provides: llvm-tools
Obsoletes: llvm-tools
Requires: lib%{name} = %{?epoch:%epoch:}%{version}-%{release}
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
@ -70,7 +54,6 @@ This package contains shared libraries for %{name}.
%package -n lib%{name}-devel
Summary: Libraries and header files for LLVM
Group: Development/Languages
Requires: lib%{name} = %{?epoch:%epoch:}%{version}-%{release}
Provides: llvm-devel
Obsoletes: llvm-devel
@ -88,50 +71,6 @@ Requires: gtk-doc
%description -n lib%{name}-apidocs
This package includes the lib%{name} API documentation.
%package tools
Summary: Additional LLVM tools
Group: Development/Languages
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description tools
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them.
This package contains additional LLVM tools.
%package -n clang
Summary: LLVM native C/C++/Objective-C compiler
Group: Development/Languages
Requires: gcc-c++
Provides: cfe
Provides: llvm-clang
Obsoletes: llvm-clang
%description -n clang
Cfe is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles, extremely useful error and warning messages and to provide a platform for building great source level tools.
The Cfe Static Analyzer is a tool automatically finds bugs in your code, and is a great example of the sort of tool that can be built using the Cfe frontend as a library to parse C/C++ code.
%package -n clang-devel
Summary: Libraries and header files for LLVM cfe
Group: Development/Languages
Requires: clang = %{?epoch:%epoch:}%{version}-%{release}
Provides: cfe-devel
Provides: llvm-clang-devel
Obsoletes: llvm-clang-devel
%description -n clang-devel
Cfe is an "LLVM native" C/C++/Objective-C compiler, which aims to deliver amazingly fast compiles, extremely useful error and warning messages and to provide a platform for building great source level tools.
The Cfe Static Analyzer is a tool automatically finds bugs in your code, and is a great example of the sort of tool that can be built using the Cfe frontend as a library to parse C/C++ code.
This package contains header files for the Cfe compiler.
%package -n clang-apidocs
Group: Documentation
Summary: clang API documentation
Requires: clang-devel = %{?epoch:%epoch:}%{version}-%{release}
Requires: gtk-doc
%description -n clang-apidocs
This package includes the clang API documentation.
%package ocaml
Summary: OCaml binding for LLVM
Group: Development/Libraries
@ -161,28 +100,11 @@ Requires: gtk-doc
This package includes the LLVM ocaml API documentation.
%prep
#% setup -q -a1 -a2 -a3 -a4 -a5 -n %{name}-%{version}.src
%setup -q -n %{name}-%{version}.src -D -T
:<< _EOF
%setup -q -n %{name}-%{version}.src
#-D -T
#:<< _EOF
#%patch0 -p1
#%patch1 -p1
mv clang-%{version}.src tools/clang
mv compiler-rt-%{version}.src projects/compiler-rt
mv clang-tools-extra-%{version}.src tools/clang/tools/extra
mv lld-%{version}.src tools/lld
mv lldb-%{version}.src tools/lldb
%patch2 -p1
#%patch3 -p1
#%ifarch x86_64
#%patch4 -p1
#%else
#%patch5 -p1
#%endif
%patch6 -p1
#%patch9 -p1
%patch14 -p1
# https://bugs.llvm.org/show_bug.cgi?id=34123
#sed -i '/LLVMSupport/d' tools/clang/tools/extra/clangd/tool/CMakeLists.txt
@ -191,49 +113,45 @@ sed -i "/REMOVE_DUPLICATES/d" tools/llvm-shlib/CMakeLists.txt
%build
#:<< __EOF
mkdir -p build
cd build
#%ifarch x86_64
# -DCMAKE_C_COMPILER=clang \
# -DCMAKE_CXX_COMPILER=clang++ \
# -DLLVM_ENABLE_LLD=ON \
#%else
# -DCMAKE_C_COMPILER=gcc \
# -DCMAKE_CXX_COMPILER=g++ \
#%endif
cmake \
-G Ninja \
%ifarch x86_64
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
%else
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
%endif
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DLLVM_HOST_TRIPLE="%{_target_platform}" \
-DLLVM_DEFAULT_TARGET_TRIPLE="%{_target_platform}" \
-DLLVM_ENABLE_FFI=ON \
-DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_BINUTILS_INCDIR=%{_includedir} \
-DPYTHON_EXECUTABLE=%{_bindir}/python \
-DLLDB_DISABLE_PYTHON=ON \
-DLLVM_INSTALL_UTILS=ON \
%ifnarch arm
-DLLVM_ENABLE_RTTI=ON \
%endif
-DLLVM_ENABLE_FFI=ON \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR \
-DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
-DLLVM_BINUTILS_INCDIR=%{_includedir} \
-DLLVM_ENABLE_SPHINX=ON \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \
%ifarch x86_64
-DLLVM_LIBDIR_SUFFIX="64" \
%endif
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
%ifnarch arm
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_BUILD_TESTS=ON \
-DLLVM_BUILD_DOCS=ON \
%else
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \
%endif
-Wno-dev ..
#%ifarch x86_64
# -DLLVM_LIBDIR_SUFFIX="64/llvm" \
#%else
# -DLLVM_LIBDIR_SUFFIX="/llvm" \
#%endif
# -DLLVM_TARGETS_TO_BUILD="host;AMDGPU" \
# -DLLVM_ENABLE_LTO=Thin \
ninja all ocaml_doc
#% make all docs-llvm-html docs-llvm-man docs-clang-html docs-clang-man
@ -275,134 +193,58 @@ rm -f %{buildroot}%{_datadir}/doc/llvm/html/.buildinfo
%files
%defattr(-,root,root)
%{_bindir}/bugpoint
%{_bindir}/lit-cpuid
%{_bindir}/count
%{_bindir}/dsymutil
%{_bindir}/FileCheck
%{_bindir}/llc
%{_bindir}/lli
%{_bindir}/lli-child-target
%{_bindir}/llvm*
%{_bindir}/not
%{_bindir}/obj2yaml
%{_bindir}/sancov
%{_bindir}/sanstats
%{_bindir}/verify-uselistorder
%{_bindir}/yaml2obj
%{_bindir}/wasm-ld
%{_bindir}/yaml-bench
%{_bindir}/opt
%{_bindir}/scan-build
%{_bindir}/scan-view
%dir %{_datadir}/scan-build
%{_datadir}/scan-build/*
%dir %{_datadir}/scan-view
%{_datadir}/scan-view/*
%dir %{_datadir}/opt-viewer
%{_datadir}/opt-viewer/*
%{_mandir}/man1/FileCheck.1*
%{_mandir}/man1/bugpoint.1*
%{_mandir}/man1/dsymutil.1*
%{_mandir}/man1/lit.1*
%{_mandir}/man1/llc.1*
%{_mandir}/man1/lli.1*
%{_mandir}/man1/llvm-*.1*
%{_mandir}/man1/opt.1*
%{_mandir}/man1/scan-build.1*
%{_mandir}/man1/tblgen.1*
#%{_mandir}/man1/FileCheck.1*
#%{_mandir}/man1/bugpoint.1*
#%{_mandir}/man1/dsymutil.1*
#%{_mandir}/man1/lit.1*
#%{_mandir}/man1/llc.1*
#%{_mandir}/man1/lli.1*
#%{_mandir}/man1/llvm-*.1*
#%{_mandir}/man1/opt.1*
#%{_mandir}/man1/tblgen.1*
%doc CREDITS.TXT LICENSE.TXT
#doc llvm-testlog.txt
%files tools
%defattr(-,root,root)
%{_bindir}/FileCheck
%{_bindir}/clangd
%{_bindir}/count
%{_bindir}/diagtool
%{_bindir}/dsymutil
%{_bindir}/hmaptool
%{_bindir}/find-all-symbols
%{_bindir}/ld64.lld
%{_bindir}/ld.lld
%{_bindir}/lld
%{_bindir}/lld-link
%{_bindir}/lldb
%{_bindir}/lldb-*
%{_bindir}/lli-child-target
%{_bindir}/modularize
%{_bindir}/not
%{_bindir}/yaml-bench
%dir %{_docdir}/clang-tools
%{_docdir}/clang-tools/*
%dir %{_docdir}/lld
%{_docdir}/lld/*
%dir %{_docdir}/lldb
%{_docdir}/lldb/*
%{_mandir}/man1/extraclangtools.1*
%{_mandir}/man1/diagtool.1*
%files -n libllvm
%defattr(-,root,root)
%{_libdir}/libLLVM-*.so
%{_libdir}/libLTO.so.*
%{_libdir}/liblldb.so.*
%{_libdir}/liblldbIntelFeatures.so.*
%{_libdir}/libRemarks.so.*
%{_libdir}/libclang.so.*
%{_libdir}/libclang-cpp.so.*
%files -n libllvm-devel
%defattr(-,root,root)
%{_includedir}/%{name}
%{_includedir}/%{name}-c
%dir %{_includedir}/lld
%{_includedir}/lld/*
%dir %{_includedir}/lldb
%{_includedir}/lldb/*
%{_libdir}/*.a
%{_libdir}/libLLVM.so
%{_libdir}/libLTO.so
%{_libdir}/libRemarks.so
%{_libdir}/libclang-cpp.so
%{_libdir}/liblldb.so
%{_libdir}/liblldbIntelFeatures.so
%{_libdir}/LLVM*.so
%dir %{_libdir}/cmake/llvm
%{_libdir}/cmake/llvm/*.cmake
%doc README.txt
#%doc README.txt
%files -n libllvm-apidocs
%defattr(-,root,root)
%dir %{_datadir}/doc/llvm/html/
%{_datadir}/doc/llvm/html/*
%files -n clang
%defattr(-,root,root)
%{_bindir}/c-index-test
%{_bindir}/clang
%{_bindir}/clang++
%{_bindir}/clang-*
%{_bindir}/git-clang-format
%{_prefix}/libexec/c++-analyzer
%{_prefix}/libexec/ccc-analyzer
%dir %{_libdir}/clang
%dir %{_libdir}/clang/%{version}
%{_libdir}/clang/%{version}/*
%dir %{_datadir}/clang/
%{_datadir}/clang/*
%{_mandir}/man1/clang.1*
%doc tools/clang/LICENSE.TXT
%files -n clang-devel
%defattr(-,root,root)
%dir %{_includedir}/clang-c
%{_includedir}/clang-c/*.h
%dir %{_includedir}/clang
%{_includedir}/clang/*
%dir %{_datadir}/doc/clang/html/
%{_datadir}/doc/clang/html/*
%{_libdir}/libclang.so
%dir %{_libdir}/cmake/clang
%{_libdir}/cmake/clang/*.cmake
%doc tools/clang/{NOTES.txt,README.txt}
%files -n clang-apidocs
%defattr(-,root,root)
%doc tools/clang/docs
#%files -n libllvm-apidocs
#%defattr(-,root,root)
#%dir %{_datadir}/doc/llvm/html/
#%{_datadir}/doc/llvm/html/*
%files ocaml
%defattr(-,root,root)
@ -422,6 +264,15 @@ rm -f %{buildroot}%{_datadir}/doc/llvm/html/.buildinfo
%{_docdir}/llvm/ocaml-html/*
%changelog
* Sat Feb 08 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 9.0.1-4mamba
- rework build flags
* Sat Feb 08 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 9.0.1-3mamba
- split build of llvm clang etc. in separate sources
* Tue Jan 07 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 9.0.1-2mamba
- rebuild with -DLLVM_ENABLE_LTO=Thin
* Mon Dec 30 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 9.0.1-1mamba
- update to 9.0.1