Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tdptheking/packages
  • yuriy-chumak/packages
  • peter/packages
  • andri0500/packages
  • ivmai77/packages
  • jonesv/packages
  • systemdlete/packages
  • Osvaldorino/packages
  • Bdragon/packages
  • ska/packages
  • Le1gh/packages
  • dimitsos/packages
  • arcayr/packages
  • alicela1n/packages
  • djt/packages
  • dusxmt/packages
  • lstarnes/packages
  • smaeul/packages
  • krazier/packages
  • koorogi/packages
  • shizonic/packages
  • gavinhoward/packages
  • sroracle/packages
  • adelie/packages
  • alyx/packages
  • sonicrules1234/packages
  • Rsamoraj11/packages
  • ndowens04/packages
  • jogness/packages
  • bunny/packages
  • rmccask/packages
  • zx2c4/packages
  • ndowens/packages
  • CyberLeo/packages
  • paper/packages
  • Ermine/packages
  • zephy/packages
  • ashquarky/adelie-packages
  • mahiuchun/packages
  • TobiX/packages
  • firasuke/packages
41 results
Show changes
Commits on Source (5650)
Showing
with 1120 additions and 7 deletions
src
pkg
scripts/sgrep
scripts/tsort
scripts/.index
A. Wilcox <AWilcox@Wilcox-Tech.com>
Horst G. Burkhardt <mc@680x0.com>
Mira Ressel <aranea@aixah.de>
Síle Ekaterin Liszka <sheila@vulpine.house> Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
Síle Ekaterin Liszka <sheila@vulpine.house> Kiyoshi Aman <adelie@aerdan.vulpine.house>
Síle Ekaterin Liszka <sheila@vulpine.house> Kiyoshi Aman <kiyoshi.aman+apkfission@gmail.com>
Síle Ekaterin Liszka <sheila@vulpine.house> Kiyoshi Aman <kiyoshi.aman@gmail.com>
Síle Ekaterin Liszka <sheila@vulpine.house> Sheila Aman
......@@ -6,7 +6,7 @@
:Status:
Draft
:Copyright:
© 2017-2018 Adélie Linux Team. NCSA open source licence.
© 2017-2020 Adélie Linux Team. NCSA open source licence.
......
Copyright (c) 2016-2017 Adélie Linux Team and Contributors.
Copyright (c) 2016-2020 Adélie Linux Team and Contributors.
All rights reserved.
Developed by: Adélie Linux Team
......@@ -19,9 +19,10 @@ Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimers in
the documentation and/or other materials provided with the distribution.
Neither the names of Adélie Linux, Wilcox Technologies, LLC, nor the
names of its contributors may be used to endorse or promote products
derived from this Software without specific prior written permission.
Neither the names of Adélie Linux; Wilcox Technologies, LLC;
Adélie Software in the Public Benefit, LLC; nor the names of its
contributors may be used to endorse or promote products derived
from this Software without specific prior written permission.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
......
......@@ -5,12 +5,12 @@
* **A. Wilcox**, Distro Lead
* **Elizabeth Myers**, Platform Group
* **Horst Burkhardt**, Platform Group
* **Kiyoshi Aman**, Platform Group
* **Síle Ekaterin Liszka**, Platform Group
* **Adélie Linux Developers and Users**, contributions
:Status:
Production
:Copyright:
© 2017-2019 Adélie Linux Team. NCSA open source licence.
© 2017-2022 Adélie Linux Team. NCSA open source licence.
......
# Contributor: Travis Tilley <ttilley@gmail.com>
# Contributor: Mitch Tishmack <mitch.tishmack@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
_pkgname=llvm
pkgver=14.0.6
_majorver=${pkgver%%.*}
pkgname=$_pkgname$_majorver
pkgrel=1
pkgdesc="Low Level Virtual Machine compiler system, version $_majorver"
url="https://llvm.org/"
arch="all"
options="!checkroot !dbg"
license="NCSA AND (Apache-2.0 WITH LLVM-exception)"
depends=""
depends_dev="$pkgname=$pkgver-r$pkgrel libexecinfo-dev libxml2-dev"
checkdepends="cmd:which"
makedepends="binutils-dev chelf chrpath cmake file libexecinfo-dev libffi-dev
libxml2-dev python3 zlib-dev"
subpackages="$pkgname-static $pkgname-libs $pkgname-dev
$pkgname-test-utils:_test_utils"
source="https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/llvm-$pkgver.src.tar.xz
llvm-fix-build-with-musl-libc.patch
disable-FileSystemTest.CreateDir-perms-assert.patch
disable-dlclose-test.patch
dwarf-info.patch
dyld-elf-ppc32.patch
graph-diff-simple.txt
hexagon.patch
macho32.patch
musl-ppc64-elfv2.patch
ppc-gcc-bug.patch
ppc-test.patch
python3-test.patch
roundeven.patch
"
builddir="$srcdir/$_pkgname-$pkgver.src"
# ARM has few failures in test suite that we don't care about currently and
# also it takes forever to run them on the builder.
case "$CARCH" in
arm*) options="$options !check";;
esac
# Whether is this package the default (latest) LLVM version.
_default_llvm="no"
if [ "$_default_llvm" = yes ]; then
provides="llvm=$pkgver-r$pkgrel"
replaces="llvm"
fi
# NOTE: It seems that there's no (sane) way how to change includedir, sharedir
# etc. separately, just the CMAKE_INSTALL_PREFIX. Standard CMake variables and
# even LLVM-specific variables, that are related to these paths, actually
# don't work (in llvm 3.7).
#
# When building a software that depends on LLVM, utility llvm-config should be
# used to discover where is LLVM installed. It provides options to print
# path of bindir, includedir, and libdir separately, but in its source, all
# these paths are actually hard-coded against INSTALL_PREFIX. We can patch it
# and move paths manually, but I'm really not sure what it may break...
#
# Also note that we should *not* add version suffix to files in llvm bindir!
# It breaks build system of some software that depends on LLVM, because they
# don't expect these files to have a sufix.
#
# So, we install all the LLVM files into /usr/lib/llvm$_majorver.
# BTW, Fedora and Debian do the same thing.
#
_prefix="usr/lib/llvm$_majorver"
prepare() {
default_prepare
# https://bugs.llvm.org//show_bug.cgi?id=31870
rm test/tools/llvm-symbolizer/print_context.c
case $CARCH in
pmmx|x86|ppc|armhf|armv7)
# Appears to not work when building 32-bit code on 64-bit host.
rm test/tools/llvm-size/radix.test;;
esac
# appears to be an issue on musl and glibc, but only fails on musl:
# https://github.com/NixOS/nixpkgs/blob/bb7e9e46/pkgs/development/compilers/llvm/8/llvm.nix#L74
rm -f test/CodeGen/AArch64/wineh4.mir
#1053
rm -fr \
test/tools/UpdateTestChecks \
test/ExecutionEngine/MCJIT/load-object-a.ll \
;
#1202
case $CARCH in
pmmx)
mv "$srcdir"/graph-diff-simple.txt \
test/tools/llvm-xray/X86/graph-diff-simple.txt ;;
esac
}
build() {
# Auto-detect it by guessing either.
ffi_include_dir="$(pkg-config --cflags-only-I libffi | sed 's|^-I||g')"
case $CTARGET_ARCH in
pmmx)
# The standard precision breaks more than it fixes; there are
# 4 failures in standard mode and only (different) 1 in fast.
export CXXFLAGS="$CXXFLAGS -fexcess-precision=fast";;
esac
case $CTARGET_ARCH in
pmmx|x86|ppc|armhf|armv7)
# 32-bit 2GB memory ceiling
# 'ld' chokes on 2GB .debug_info, 'scanelf' on binary size
# see also: #1251, #1253, abuild#20
export CXXFLAGS="$CXXFLAGS -ggdb1";;
esac
cmake -G "Unix Makefiles" -Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/$_prefix \
-DCMAKE_VERBOSE_MAKEFILE=NO \
-DFFI_INCLUDE_DIR="$ffi_include_dir" \
-DLLVM_BINUTILS_INCDIR=/usr/include \
-DLLVM_BUILD_DOCS=OFF \
-DLLVM_BUILD_EXAMPLES=OFF \
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_BUILD_TESTS=ON \
-DLLVM_DEFAULT_TARGET_TRIPLE="$CBUILD" \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_FFI=ON \
-DLLVM_ENABLE_LIBCXX=OFF \
-DLLVM_ENABLE_PIC=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_ENABLE_TERMINFO=ON \
-DLLVM_ENABLE_ZLIB=ON \
-DLLVM_HOST_TRIPLE="$CHOST" \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_TARGETS_TO_BUILD='AArch64;AMDGPU;ARM;BPF;Hexagon;Lanai;Mips;MSP430;PowerPC;RISCV;Sparc;SystemZ;WebAssembly;X86;XCore' \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='M68k' \
-Bbuild .
make -C build llvm-tblgen
make -C build
python3 utils/lit/setup.py build
}
check() {
make -C build check-llvm
}
package() {
make DESTDIR="$pkgdir" -C build install
cd "$pkgdir"/$_prefix
# Remove RPATHs.
file lib/*.so bin/* \
| awk -F: '$2~/ELF/{print $1}' \
| xargs -r chrpath -d
# Thread 3 requires a lot of stack space to LTO when targeting ARM.
# Note that this occurs even when crossing (on a ppc64 host).
chelf -s 1048576 bin/llvm-lto2
# Symlink files from /usr/lib/llvm*/bin to /usr/bin.
mkdir -p "$pkgdir"/usr/bin
for full_name in bin/*; do
bin_name=${full_name##*/}
# If this package provides=llvm (i.e. it's the default/latest
# llvm package), omit version infix/suffix.
if [ "$_default_llvm" = yes ]; then
link_name=$bin_name
# ..otherwise, add version infix/suffix to the executable name.
else case "$bin_name" in
llvm-*) link_name="llvm$_majorver-${bin_name#llvm-}";;
*) link_name="$bin_name$_majorver";;
esac
fi
case "$name" in
FileCheck | obj2yaml | yaml2obj) continue;;
esac
ln -s ../lib/llvm$_majorver/bin/$bin_name "$pkgdir"/usr/bin/$link_name
done
# Move /usr/lib/$pkgname/include/ into /usr/include/$pkgname/
# and symlink it back.
mkdir -p "$pkgdir"/usr/include/$pkgname
mv include/* "$pkgdir"/usr/include/$pkgname/
rmdir include
ln -s ../../include/$pkgname include
ln -s "$pkgdir"/usr/lib/cmake/llvm ../$pkgname/lib/cmake/llvm
}
static() {
pkgdesc="LLVM $_majorver static libraries"
_common_subpkg
mkdir -p "$subpkgdir"/$_prefix/lib
mv "$pkgdir"/$_prefix/lib/*.a "$subpkgdir"/$_prefix/lib/
strip -d "$subpkgdir"/$_prefix/lib/*.a
}
libs() {
pkgdesc="LLVM $_majorver runtime library"
main_soname="libLLVM-$_majorver.so"
ver_soname="libLLVM-$pkgver.so"
_common_subpkg
# libLLVM should be in /usr/lib. This is needed for binaries that are
# dynamically linked with libLLVM, so they can find it on default path.
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/$_prefix/lib/$main_soname "$subpkgdir"/usr/lib/
ln -s $main_soname "$subpkgdir"/usr/lib/$ver_soname
# And also symlink it back to the LLVM prefix.
mkdir -p "$subpkgdir"/$_prefix/lib
ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/$main_soname
ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/$ver_soname
}
dev() {
_common_subpkg
default_dev
mkdir -p "$subpkgdir"/$_prefix/bin
mv "$pkgdir"/$_prefix/lib "$subpkgdir"/$_prefix/
mv "$pkgdir"/$_prefix/include "$subpkgdir"/$_prefix/
mv "$pkgdir"/$_prefix/bin/llvm-config "$subpkgdir"/$_prefix/bin/
}
_test_utils() {
pkgdesc="LLVM $_majorver utilities for executing LLVM and Clang style test suites"
depends="python3"
_common_subpkg
replaces=""
litver="$(python3 "$builddir"/utils/lit/setup.py --version 2>/dev/null \
| sed 's/\.dev.*$//')"
test -n "$litver" || return 1
provides="$provides lit=$litver-r$pkgrel"
cd "$builddir"/build
install -D -m 755 bin/FileCheck "$subpkgdir"/$_prefix/bin/FileCheck
install -D -m 755 bin/count "$subpkgdir"/$_prefix/bin/count
install -D -m 755 bin/not "$subpkgdir"/$_prefix/bin/not
python3 ../utils/lit/setup.py install --prefix=/usr --root="$subpkgdir"
ln -s ../../../bin/lit "$subpkgdir"/$_prefix/bin/lit
}
_common_subpkg() {
if [ "$_default_llvm" = yes ]; then
replaces="llvm${subpkgname#$pkgname}"
provides="$replaces=$pkgver-r$pkgrel"
fi
}
sha512sums="6461bdde27aac17fa44c3e99a85ec47ffb181d0d4e5c3ef1c4286a59583e3b0c51af3c8081a300f45b99524340773a3011380059e3b3a571c3b0a8733e96fc1d llvm-14.0.6.src.tar.xz
f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71 llvm-fix-build-with-musl-libc.patch
49c47f125014b60d0ea7870f981a2c1708ad705793f89287ed846ee881a837a4dc0170bf467e03f2ef56177473128945287749ac80dc2d13cfabcf8b929ba58a disable-FileSystemTest.CreateDir-perms-assert.patch
caeec8e4dbd92f5f74940780b69075f3879a267a8623822cbdc193fd14706eb089071e3a5a20d60cc2eca59e4c5b2a61d29827a2f3362ee7c5f74f11d9ace200 disable-dlclose-test.patch
2842bcef71fb962cb49717fa9ba3e7318400c4a9175284a39ae3ff13a00260556794d0d63341430b2c64a0bca1ac76186e02c92e444a737a5dec1b6de27bbc60 dwarf-info.patch
5fa36157f7a76ca70d22af7bd96850db454d6add3a19cc3272962633c453087015755ca9df0de29cc40359e89279e470e91ff1a69d1453596a73291b36f39b23 dyld-elf-ppc32.patch
a1533f4b9d35e1069fd065fbeb5fedce96fa49fdb007f994d8921d8a04cf2caadca276bbd9553ff86040b0f9dfce489c385fa2a7434e2dee3732942e6914db4e graph-diff-simple.txt
9abe376068801a09b2af01eef0cd319f48862b5ff7cce62af3cf4e7597a0898842125ae574577b545734ec1381f192b924b4f717a9c094f119e32ada81a2b9a2 hexagon.patch
de9791cc476817782b553c4edab696132da4ed2b9a3d80dbf1b85b7dc7a8c5e4caf14f2f26e33c27cd80a91b36709d3b24caea910c0a6315ffbb297cb748468d macho32.patch
189e0967c7c29c6315bd3e8da818b94fc3ed99c8cdce14c3d7ccc2fbd18007b3d97f74689dc3d498f624a10411067c41648b9b67d420d2344fa7e1bf7711c8dd musl-ppc64-elfv2.patch
02fd3e9869cf3da60b0da17b69dc592fdcd0442d50de940b578b7a9aa19554569324b44f6f84728c03b2897859f99076278741bdd0872fab70660eb844d05f26 ppc-gcc-bug.patch
62de403e4cfd58d9f33f8b35ff31f66c906fd39c667fbcfa394d03f636fb10977c2f53c3a780d0c8e099f9a081951402757e12842d82a7cbd1aef4158f51d5c2 ppc-test.patch
89ef5fbab039b017a5652656adf17b680525f1c5dd0b1afc8034fe0b34a2ca196d87640f54cc826356cfcd88c6e5f10754b7e38f04ca49ede4f3864080b787bd python3-test.patch
dca77af49ea181ab8d41630b8e7575b83aac22686a1119479abf8fe22d8f13032d69ef83a9635b9ad9b935cd3b51251d939e05967ad40db43abf69ac40e0eccd roundeven.patch"
Author: A. Wilcox <awilfox@adelielinux.org>
This isn't the proper fix, but debugging the LLVM formatter is a bit
above my paygrade at the moment.
The issue shows up in the DWARF X86 test on ppc and armv7:
error: Simplified template DW_AT_name could not be reconstituted:
original: f3<char, '\x00', '\x01', '\x06', '\a', '\r', '\x0e', '\x1f', ' ', '!', '\x7f', '\x80'>
reconstituted: f3<char, '\x00', '\x00', '\x00', '\a', '\r', '\x00', '\x00', ' ', '!', '\x00', '\x00'>
With this patch, this error does not occur. Debugging shows that the
llvm::format overload called in the error case is <long long>, so I
think it is having an issue converting a 64-bit value on platforms
where char is default-unsigned.
(pmmx does not show this issue, and has signed char.)
--- llvm-14.0.6.src/lib/DebugInfo/DWARF/DWARFDie.cpp.old 2022-06-22 16:46:24.000000000 +0000
+++ llvm-14.0.6.src/lib/DebugInfo/DWARF/DWARFDie.cpp 2022-11-28 10:32:05.573627744 +0000
@@ -506,7 +506,7 @@
OS << (char)Val;
OS << "'";
} else if (Val < 256)
- OS << to_string(llvm::format("'\\x%02x'", Val));
+ OS << to_string(llvm::format("'\\x%02x'", (unsigned char)Val));
else if (Val <= 0xFFFF)
OS << to_string(llvm::format("'\\u%04x'", Val));
else
Author: A. Wilcox <awilfox@adelielinux.org>
Upstream-Status: Pending
This implements the R_PPC_REL32 relocation type, which is needed for the
OrcJIT to work properly on 32-bit PowerPC.
Needs more tests before submitting upstream, but seems to DTRT.
--- llvm-14.0.6.src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp.old 2022-06-22 16:46:24.000000000 +0000
+++ llvm-14.0.6.src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp 2022-11-28 06:33:12.239921624 +0000
@@ -818,6 +818,13 @@
case ELF::R_PPC_ADDR16_HA:
writeInt16BE(LocalAddress, applyPPCha(Value + Addend));
break;
+ case ELF::R_PPC_REL32:
+ uint32_t FinalAddress = Section.getLoadAddressWithOffset(Offset);
+ int64_t delta = static_cast<int64_t>(Value - FinalAddress + Addend);
+ if (SignExtend64<32>(delta) != delta)
+ llvm_unreachable("Relocation R_PPC_REL32 overflow");
+ writeInt32BE(LocalAddress, delta);
+ break;
}
}
#RUN: llvm-xray graph-diff -o - -c min -b min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=VCEC
#RUN: llvm-xray graph-diff -o - -c min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=EC
#RUN: llvm-xray graph-diff -o - -b min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=VC
#RUN: llvm-xray graph-diff -o - -e min -v min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=ELVL
#RUN: llvm-xray graph-diff -o - -e min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=EL
#RUN: llvm-xray graph-diff -o - -v min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=VL
#RUN: llvm-xray graph-diff -o - -v min -b min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=VLVC
#RUN: llvm-xray graph-diff -o - -e min -c min -m %S/Inputs/simple-instrmap.yaml \
#RUN: %S/Inputs/graph-diff-A.yaml %S/Inputs/graph-diff-B.yaml \
#RUN: | FileCheck %s -check-prefix=ELEC
#VCEC: digraph xrayDiff {
#VCEC-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#VCEC-DAG: F[[N1NO:[0-9]+]] [label="#1" color="#276419"]
#VCEC-DAG: F[[N2NO:[0-9]+]] [label="#2" color="#276419"]
#VCEC-DAG: F[[N3NO:[0-9]+]] [label="#3" color="#276419"]
#VCEC-DAG: F[[N4NO:[0-9]+]] [label="#4" color="#9BCE61"]
#VCEC-DAG: F[[N5NO:[0-9]+]] [label="#5" color="#F7F7F7"]
#VCEC-DAG: F[[N6NO:[0-9]+]] [label="#6" color="#F5C4E0"]
#VCEC-DAG: F[[N7NO:[0-9]+]] [label="#7" color="#E17FB4"]
#VCEC-DAG: F[[N8NO:[0-9]+]] [label="#8" color="#CB3088"]
#VCEC-DAG: F[[N9NO:[0-9]+]] [label="#9" color="#AD0E69"]
#VCEC-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#VCEC-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="" color="#276419" labelfontcolor="#276419" penwidth=8.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="" color="#276419" labelfontcolor="#276419" penwidth=3.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="" color="#276419" labelfontcolor="#276419" penwidth=1.33]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="" color="#9BCE61" labelfontcolor="#9BCE61" penwidth=1.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="" color="#F7F7F7" labelfontcolor="#F7F7F7" penwidth=1.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="" color="#F5C4E0" labelfontcolor="#F5C4E0" penwidth=1.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="" color="#E17FB4" labelfontcolor="#E17FB4" penwidth=1.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="" color="#CB3088" labelfontcolor="#CB3088" penwidth=1.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="" color="#AD0E69" labelfontcolor="#AD0E69" penwidth=1.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#VCEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#VCEC-NEXT:}
#EC: digraph xrayDiff {
#EC-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#EC-DAG: F[[N1NO:[0-9]+]] [label="#1" color="black"]
#EC-DAG: F[[N2NO:[0-9]+]] [label="#2" color="black"]
#EC-DAG: F[[N3NO:[0-9]+]] [label="#3" color="black"]
#EC-DAG: F[[N4NO:[0-9]+]] [label="#4" color="black"]
#EC-DAG: F[[N5NO:[0-9]+]] [label="#5" color="black"]
#EC-DAG: F[[N6NO:[0-9]+]] [label="#6" color="black"]
#EC-DAG: F[[N7NO:[0-9]+]] [label="#7" color="black"]
#EC-DAG: F[[N8NO:[0-9]+]] [label="#8" color="black"]
#EC-DAG: F[[N9NO:[0-9]+]] [label="#9" color="black"]
#EC-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#EC-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="" color="#276419" labelfontcolor="#276419" penwidth=8.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="" color="#276419" labelfontcolor="#276419" penwidth=3.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="" color="#276419" labelfontcolor="#276419" penwidth=1.33]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="" color="#9BCE61" labelfontcolor="#9BCE61" penwidth=1.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="" color="#F7F7F7" labelfontcolor="#F7F7F7" penwidth=1.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="" color="#F5C4E0" labelfontcolor="#F5C4E0" penwidth=1.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="" color="#E17FB4" labelfontcolor="#E17FB4" penwidth=1.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="" color="#CB3088" labelfontcolor="#CB3088" penwidth=1.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="" color="#AD0E69" labelfontcolor="#AD0E69" penwidth=1.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#EC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#EC-NEXT:}
#VC: digraph xrayDiff {
#VC-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#VC-DAG: F[[N1NO:[0-9]+]] [label="#1" color="#276419"]
#VC-DAG: F[[N2NO:[0-9]+]] [label="#2" color="#276419"]
#VC-DAG: F[[N3NO:[0-9]+]] [label="#3" color="#276419"]
#VC-DAG: F[[N4NO:[0-9]+]] [label="#4" color="#9BCE61"]
#VC-DAG: F[[N5NO:[0-9]+]] [label="#5" color="#F7F7F7"]
#VC-DAG: F[[N6NO:[0-9]+]] [label="#6" color="#F5C4E0"]
#VC-DAG: F[[N7NO:[0-9]+]] [label="#7" color="#E17FB4"]
#VC-DAG: F[[N8NO:[0-9]+]] [label="#8" color="#CB3088"]
#VC-DAG: F[[N9NO:[0-9]+]] [label="#9" color="#AD0E69"]
#VC-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#VC-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#VC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#VC-NEXT:}
#ELVL: digraph xrayDiff {
#ELVL-NEXT: node [shape=record]
#ELVL-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#ELVL-DAG: F[[N1NO:[0-9]+]] [label="{#1|800.00%}" color="black"]
#ELVL-DAG: F[[N2NO:[0-9]+]] [label="{#2|300.00%}" color="black"]
#ELVL-DAG: F[[N3NO:[0-9]+]] [label="{#3|133.33%}" color="black"]
#ELVL-DAG: F[[N4NO:[0-9]+]] [label="{#4|50.00%}" color="black"]
#ELVL-DAG: F[[N5NO:[0-9]+]] [label="{#5|0.00%}" color="black"]
#ELVL-DAG: F[[N6NO:[0-9]+]] [label="{#6|-33.33%}" color="black"]
#ELVL-DAG: F[[N7NO:[0-9]+]] [label="{#7|-57.14%}" color="black"]
#ELVL-DAG: F[[N8NO:[0-9]+]] [label="{#8|-75.00%}" color="black"]
#ELVL-DAG: F[[N9NO:[0-9]+]] [label="{#9|-88.89%}" color="black"]
#ELVL-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#ELVL-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="800.00%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="300.00%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="133.33%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="50.00%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="0.00%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="-33.33%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="-57.14%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="-75.00%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="-88.89%" color="black" labelfontcolor="black" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#ELVL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#ELVL-NEXT:}
#EL: digraph xrayDiff {
#EL-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#EL-DAG: F[[N1NO:[0-9]+]] [label="#1" color="black"]
#EL-DAG: F[[N2NO:[0-9]+]] [label="#2" color="black"]
#EL-DAG: F[[N3NO:[0-9]+]] [label="#3" color="black"]
#EL-DAG: F[[N4NO:[0-9]+]] [label="#4" color="black"]
#EL-DAG: F[[N5NO:[0-9]+]] [label="#5" color="black"]
#EL-DAG: F[[N6NO:[0-9]+]] [label="#6" color="black"]
#EL-DAG: F[[N7NO:[0-9]+]] [label="#7" color="black"]
#EL-DAG: F[[N8NO:[0-9]+]] [label="#8" color="black"]
#EL-DAG: F[[N9NO:[0-9]+]] [label="#9" color="black"]
#EL-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#EL-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="800.00%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="300.00%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="133.33%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="50.00%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="0.00%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="-33.33%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="-57.14%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="-75.00%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="-88.89%" color="black" labelfontcolor="black" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#EL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#EL-NEXT:}
#VL: digraph xrayDiff {
#VL-NEXT: node [shape=record]
#VL-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#VL-DAG: F[[N1NO:[0-9]+]] [label="{#1|800.00%}" color="black"]
#VL-DAG: F[[N2NO:[0-9]+]] [label="{#2|300.00%}" color="black"]
#VL-DAG: F[[N3NO:[0-9]+]] [label="{#3|133.33%}" color="black"]
#VL-DAG: F[[N4NO:[0-9]+]] [label="{#4|50.00%}" color="black"]
#VL-DAG: F[[N5NO:[0-9]+]] [label="{#5|0.00%}" color="black"]
#VL-DAG: F[[N6NO:[0-9]+]] [label="{#6|-33.33%}" color="black"]
#VL-DAG: F[[N7NO:[0-9]+]] [label="{#7|-57.14%}" color="black"]
#VL-DAG: F[[N8NO:[0-9]+]] [label="{#8|-75.00%}" color="black"]
#VL-DAG: F[[N9NO:[0-9]+]] [label="{#9|-88.89%}" color="black"]
#VL-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#VL-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#VL-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#VL-NEXT:}
#VLVC: digraph xrayDiff {
#VLVC-NEXT: node [shape=record]
#VLVC-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#VLVC-DAG: F[[N1NO:[0-9]+]] [label="{#1|800.00%}" color="#276419"]
#VLVC-DAG: F[[N2NO:[0-9]+]] [label="{#2|300.00%}" color="#276419"]
#VLVC-DAG: F[[N3NO:[0-9]+]] [label="{#3|133.33%}" color="#276419"]
#VLVC-DAG: F[[N4NO:[0-9]+]] [label="{#4|50.00%}" color="#9BCE61"]
#VLVC-DAG: F[[N5NO:[0-9]+]] [label="{#5|0.00%}" color="#F7F7F7"]
#VLVC-DAG: F[[N6NO:[0-9]+]] [label="{#6|-33.33%}" color="#F5C4E0"]
#VLVC-DAG: F[[N7NO:[0-9]+]] [label="{#7|-57.14%}" color="#E17FB4"]
#VLVC-DAG: F[[N8NO:[0-9]+]] [label="{#8|-75.00%}" color="#CB3088"]
#VLVC-DAG: F[[N9NO:[0-9]+]] [label="{#9|-88.89%}" color="#AD0E69"]
#VLVC-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#VLVC-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="" color="black" labelfontcolor="black" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#VLVC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#VLVC-NEXT:}
#ELEC: digraph xrayDiff {
#ELEC-DAG: F[[F0NO:[0-9]+]] [label="F0"]
#ELEC-DAG: F[[N1NO:[0-9]+]] [label="#1" color="black"]
#ELEC-DAG: F[[N2NO:[0-9]+]] [label="#2" color="black"]
#ELEC-DAG: F[[N3NO:[0-9]+]] [label="#3" color="black"]
#ELEC-DAG: F[[N4NO:[0-9]+]] [label="#4" color="black"]
#ELEC-DAG: F[[N5NO:[0-9]+]] [label="#5" color="black"]
#ELEC-DAG: F[[N6NO:[0-9]+]] [label="#6" color="black"]
#ELEC-DAG: F[[N7NO:[0-9]+]] [label="#7" color="black"]
#ELEC-DAG: F[[N8NO:[0-9]+]] [label="#8" color="black"]
#ELEC-DAG: F[[N9NO:[0-9]+]] [label="#9" color="black"]
#ELEC-DAG: F[[NANO:[0-9]+]] [label="#10" color="#00FF00"]
#ELEC-DAG: F[[NBNO:[0-9]+]] [label="#11" color="#FF0000"]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N1NO]] [tooltip="F0 -> #1" label="800.00%" color="#276419" labelfontcolor="#276419" penwidth=8.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N2NO]] [tooltip="F0 -> #2" label="300.00%" color="#276419" labelfontcolor="#276419" penwidth=3.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N3NO]] [tooltip="F0 -> #3" label="133.33%" color="#276419" labelfontcolor="#276419" penwidth=1.33]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N4NO]] [tooltip="F0 -> #4" label="50.00%" color="#9BCE61" labelfontcolor="#9BCE61" penwidth=1.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N5NO]] [tooltip="F0 -> #5" label="0.00%" color="#F7F7F7" labelfontcolor="#F7F7F7" penwidth=1.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N6NO]] [tooltip="F0 -> #6" label="-33.33%" color="#F5C4E0" labelfontcolor="#F5C4E0" penwidth=1.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N7NO]] [tooltip="F0 -> #7" label="-57.14%" color="#E17FB4" labelfontcolor="#E17FB4" penwidth=1.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N8NO]] [tooltip="F0 -> #8" label="-75.00%" color="#CB3088" labelfontcolor="#CB3088" penwidth=1.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[N9NO]] [tooltip="F0 -> #9" label="-88.89%" color="#AD0E69" labelfontcolor="#AD0E69" penwidth=1.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NANO]] [tooltip="F0 -> #10" label="" color="#00FF00" labelfontcolor="#00FF00" penwidth=1.00]
#ELEC-DAG: F{{.*}}[[F0NO]] -> F{{.*}}[[NBNO]] [tooltip="F0 -> #11" label="" color="#FF0000" labelfontcolor="#FF0000" penwidth=1.00]
#ELEC-NEXT:}
From 37605662a99bd0815e2f2e452eb6ab1ce53ecffd Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Mon, 30 May 2022 02:51:34 -0500
Subject: [PATCH] [Hexagon][Tests] Fix tests on Linux/musl
When running on a host system using musl, the target triple is defined
as hexagon-unknown-linux-musl by default. The Linux ABI differs from
the non-Linux one with varargs, so this causes the tests to fail.
Closes BZ49592, PR48936.
Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
---
test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll | 2 +-
test/CodeGen/Hexagon/long-calls.ll | 2 +-
test/CodeGen/Hexagon/mlong-calls.ll | 2 +-
test/CodeGen/Hexagon/pic-regusage.ll | 2 +-
test/CodeGen/Hexagon/runtime-stkchk.ll | 2 +-
test/CodeGen/Hexagon/swp-memrefs-epilog.ll | 2 +-
test/CodeGen/Hexagon/vararg-formal.ll | 2 +-
7 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll b/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll
index afbef217911a..d317d7eac800 100644
--- a/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll
+++ b/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -O2 -spill-func-threshold=2 < %s | FileCheck %s
+; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -O2 -spill-func-threshold=2 < %s | FileCheck %s
declare i32 @f0(i32, i32, i32, i32, i32, i32)
diff --git a/test/CodeGen/Hexagon/long-calls.ll b/test/CodeGen/Hexagon/long-calls.ll
index 628362783c9c..886405a2d91a 100644
--- a/test/CodeGen/Hexagon/long-calls.ll
+++ b/test/CodeGen/Hexagon/long-calls.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -enable-save-restore-long -hexagon-initial-cfg-cleanup=0 < %s | FileCheck %s
+; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -enable-save-restore-long -hexagon-initial-cfg-cleanup=0 < %s | FileCheck %s
; Check that the -long-calls feature is supported by the backend.
diff --git a/test/CodeGen/Hexagon/mlong-calls.ll b/test/CodeGen/Hexagon/mlong-calls.ll
index d76b87f987fe..383486dfe63d 100644
--- a/test/CodeGen/Hexagon/mlong-calls.ll
+++ b/test/CodeGen/Hexagon/mlong-calls.ll
@@ -1,4 +1,4 @@
-; RUN: llc -hexagon-long-calls -march=hexagon -enable-save-restore-long=true < %s | FileCheck %s
+; RUN: llc -hexagon-long-calls -march=hexagon -mtriple=hexagon-unknown-linux-gnu -enable-save-restore-long=true < %s | FileCheck %s
; CHECK: call ##f1
; CHECK: jump ##__restore
diff --git a/test/CodeGen/Hexagon/pic-regusage.ll b/test/CodeGen/Hexagon/pic-regusage.ll
index 9d3b6cec39e3..077063e36550 100644
--- a/test/CodeGen/Hexagon/pic-regusage.ll
+++ b/test/CodeGen/Hexagon/pic-regusage.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -relocation-model=pic < %s | FileCheck %s
+; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s
; Force the use of R14 (by clobbering everything else in the inline asm).
; Make sure that R14 is not set before the __save call (which will clobber
diff --git a/test/CodeGen/Hexagon/runtime-stkchk.ll b/test/CodeGen/Hexagon/runtime-stkchk.ll
index 66e93d02ef51..2f3f2ad10f6a 100644
--- a/test/CodeGen/Hexagon/runtime-stkchk.ll
+++ b/test/CodeGen/Hexagon/runtime-stkchk.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -mcpu=hexagonv55 -enable-stackovf-sanitizer < %s | FileCheck %s
+; RUN: llc -march=hexagon -mcpu=hexagonv55 -mtriple=hexagon-unknown-linux-gnu -enable-stackovf-sanitizer < %s | FileCheck %s
; CHECK-LABEL: foo_1
; CHECK: __runtime_stack_check
diff --git a/test/CodeGen/Hexagon/swp-memrefs-epilog.ll b/test/CodeGen/Hexagon/swp-memrefs-epilog.ll
index 20e39dd08fd7..b34dfbc31e9d 100644
--- a/test/CodeGen/Hexagon/swp-memrefs-epilog.ll
+++ b/test/CodeGen/Hexagon/swp-memrefs-epilog.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon -O2 -fp-contract=fast < %s -pipeliner-experimental-cg=true | FileCheck %s
+; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -O2 -fp-contract=fast < %s -pipeliner-experimental-cg=true | FileCheck %s
; Test that the memoperands for instructions in the epilog are updated
; correctly. Previously, the pipeliner updated the offset for the memoperands
diff --git a/test/CodeGen/Hexagon/vararg-formal.ll b/test/CodeGen/Hexagon/vararg-formal.ll
index 6bba65fcab16..fb3132929bcf 100644
--- a/test/CodeGen/Hexagon/vararg-formal.ll
+++ b/test/CodeGen/Hexagon/vararg-formal.ll
@@ -1,4 +1,4 @@
-; RUN: llc -march=hexagon < %s | FileCheck %s
+; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu < %s | FileCheck %s
; Make sure that the first formal argument is not loaded from memory.
; CHECK-NOT: memw
--
2.36.0
Use integer offset math instead of pointer math to determine load
command bounds.
Upstream-URL: https://github.com/llvm/llvm-project/issues/56746
--- llvm-14.0.6.src/lib/Object/MachOObjectFile.cpp.old 2022-06-22 16:46:24.000000000 +0000
+++ llvm-14.0.6.src/lib/Object/MachOObjectFile.cpp 2022-11-28 04:21:02.730211841 +0000
@@ -190,7 +190,8 @@
getLoadCommandInfo(const MachOObjectFile &Obj, const char *Ptr,
uint32_t LoadCommandIndex) {
if (auto CmdOrErr = getStructOrErr<MachO::load_command>(Obj, Ptr)) {
- if (CmdOrErr->cmdsize + Ptr > Obj.getData().end())
+ uint64_t Offset = Ptr - Obj.getData().begin();
+ if (CmdOrErr->cmdsize + Offset > Obj.getData().size())
return malformedError("load command " + Twine(LoadCommandIndex) +
" extends past end of file");
if (CmdOrErr->cmdsize < 8)
From 750d323a6060ad92c3d247f85d6555041f55b4a5 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Thu, 4 Oct 2018 15:26:59 -0500
Subject: [PATCH] Add support for powerpc64-*-linux-musl targets
This patch ensures that 64-bit PowerPC musl targets use ELFv2 ABI on both
endians. It additionally adds a test that big endian PPC64 uses ELFv2 on
musl.
---
lib/Target/PowerPC/PPCTargetMachine.cpp | 4 ++++
test/CodeGen/PowerPC/ppc64-elf-abi.ll | 1 +
2 files changed, 5 insertions(+)
diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
index 34410393ef6..c583fba8cab 100644
--- a/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -228,6 +228,10 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT,
case Triple::ppc64le:
return PPCTargetMachine::PPC_ABI_ELFv2;
case Triple::ppc64:
+ // musl uses ELFv2 ABI on both endians.
+ if (TT.getEnvironment() == Triple::Musl)
+ return PPCTargetMachine::PPC_ABI_ELFv2;
+
return PPCTargetMachine::PPC_ABI_ELFv1;
default:
return PPCTargetMachine::PPC_ABI_UNKNOWN;
diff --git a/test/CodeGen/PowerPC/ppc64-elf-abi.ll b/test/CodeGen/PowerPC/ppc64-elf-abi.ll
index 1e17930304b..aa594b37b47 100644
--- a/test/CodeGen/PowerPC/ppc64-elf-abi.ll
+++ b/test/CodeGen/PowerPC/ppc64-elf-abi.ll
@@ -1,6 +1,7 @@
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv1
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-musl < %s | FileCheck %s -check-prefix=CHECK-ELFv2
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2
--
2.18.0
Upstream: https://github.com/llvm/llvm-project/issues/95594
Ref: #1204
--- llvm/include/llvm/ExecutionEngine/Orc/Shared/SimplePackedSerialization.h.old 2024-06-15 12:21:32.000000000 -0500
+++ llvm/include/llvm/ExecutionEngine/Orc/Shared/SimplePackedSerialization.h 2024-06-25 21:42:07.495284340 -0500
@@ -378,6 +378,8 @@
return Size;
}
+#pragma GCC push_options
+#pragma GCC optimize("no-tree-ch")
static bool serialize(SPSOutputBuffer &OB, const SequenceT &S) {
if (!SPSArgList<uint64_t>::serialize(OB, static_cast<uint64_t>(S.size())))
return false;
@@ -386,6 +388,7 @@
return false;
return true;
}
+#pragma GCC pop_options
static bool deserialize(SPSInputBuffer &IB, SequenceT &S) {
using TBSD = TrivialSPSSequenceDeserialization<SPSElementTagT, SequenceT>;
The ifdef tree uses __powerpc__ so 32-bit PPC is supported as well.
--- llvm-14.0.6.src/unittests/Support/Host.cpp.old 2022-06-22 16:46:24.000000000 +0000
+++ llvm-14.0.6.src/unittests/Support/Host.cpp 2022-11-28 02:15:41.512865406 +0000
@@ -40,7 +40,7 @@
// some systems.
return (Host.isOSWindows() && llvm_is_multithreaded()) ||
Host.isOSDarwin() || (Host.isX86() && Host.isOSLinux()) ||
- (Host.isPPC64() && Host.isOSLinux()) ||
+ (Host.isPPC() && Host.isOSLinux()) ||
(Host.isSystemZ() && (Host.isOSLinux() || Host.isOSzOS()));
}
--- llvm-7.0.1.src/test/BugPoint/compile-custom.ll.py.old 2014-03-13 00:10:37.000000000 +0000
+++ llvm-7.0.1.src/test/BugPoint/compile-custom.ll.py 2019-03-10 03:48:48.600000000 +0000
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
from __future__ import print_function
--- llvm-14.0.4.src/lib/Analysis/TargetLibraryInfo.cpp.old 2022-05-24 22:02:58.000000000 +0000
+++ llvm-14.0.4.src/lib/Analysis/TargetLibraryInfo.cpp 2022-07-06 01:38:22.016862561 +0000
@@ -588,6 +588,13 @@
TLI.setUnavailable(LibFunc_statvfs64);
TLI.setUnavailable(LibFunc_tmpfile64);
+ // These functions are unavailable on musl.
+ if (T.isMusl()) {
+ TLI.setUnavailable(LibFunc_roundeven);
+ TLI.setUnavailable(LibFunc_roundevenf);
+ TLI.setUnavailable(LibFunc_roundevenl);
+ }
+
// Relaxed math functions are included in math-finite.h on Linux (GLIBC).
// Note that math-finite.h is no longer supported by top-of-tree GLIBC,
// so we keep these functions around just so that they're recognized by
--- llvm-14.0.4.src/test/Transforms/InstCombine/double-float-shrink-2.ll.old 2022-05-24 22:02:58.000000000 +0000
+++ llvm-14.0.4.src/test/Transforms/InstCombine/double-float-shrink-2.ll 2022-07-06 02:03:20.657791057 +0000
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt < %s -instcombine -S -mtriple "i386-pc-linux" | FileCheck %s
+; RUN: opt < %s -instcombine -S -mtriple "i386-pc-linux-gnu" | FileCheck %s
; RUN: opt < %s -instcombine -S -mtriple "i386-pc-win32" | FileCheck %s
; RUN: opt < %s -instcombine -S -mtriple "x86_64-pc-win32" | FileCheck %s
; RUN: opt < %s -instcombine -S -mtriple "i386-pc-mingw32" | FileCheck %s
--- llvm-14.0.4.src/test/ExecutionEngine/Interpreter/intrinsics.ll.old 2022-05-24 22:02:58.000000000 +0000
+++ llvm-14.0.4.src/test/ExecutionEngine/Interpreter/intrinsics.ll 2022-07-23 06:50:59.336665672 +0000
@@ -13,8 +13,8 @@
declare double @llvm.trunc.f64(double)
declare float @llvm.round.f32(float)
declare double @llvm.round.f64(double)
-declare float @llvm.roundeven.f32(float)
-declare double @llvm.roundeven.f64(double)
+;declare float @llvm.roundeven.f32(float)
+;declare double @llvm.roundeven.f64(double)
declare float @llvm.copysign.f32(float, float)
declare double @llvm.copysign.f64(double, double)
@@ -31,8 +31,8 @@
%trunc64 = call double @llvm.trunc.f64(double 0.000000e+00)
%round32 = call float @llvm.round.f32(float 0.000000e+00)
%round64 = call double @llvm.round.f64(double 0.000000e+00)
- %roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)
- %roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)
+ ;%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)
+ ;%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)
%copysign32 = call float @llvm.copysign.f32(float 0.000000e+00, float 0.000000e+00)
%copysign64 = call double @llvm.copysign.f64(double 0.000000e+00, double 0.000000e+00)
ret i32 0
# Contributor: Travis Tilley <ttilley@gmail.com>
# Contributor: Mitch Tishmack <mitch.tishmack@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
_pkgname=llvm
pkgver=16.0.6
_majorver=${pkgver%%.*}
pkgname=$_pkgname$_majorver
pkgrel=0
pkgdesc="Low Level Virtual Machine compiler system, version $_majorver"
url="https://llvm.org/"
arch="all"
options="!checkroot !dbg"
license="NCSA AND (Apache-2.0 WITH LLVM-exception)"
depends=""
depends_dev="$pkgname=$pkgver-r$pkgrel libexecinfo-dev libxml2-dev"
checkdepends="cmd:which"
makedepends="binutils-dev chelf chrpath cmake file libexecinfo-dev libffi-dev
libxml2-dev python3 zlib-dev"
subpackages="$pkgname-static $pkgname-libs $pkgname-dev
$pkgname-test-utils:_test_utils"
source="https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/llvm-project-$pkgver.src.tar.xz
llvm-fix-build-with-musl-libc.patch
disable-FileSystemTest.CreateDir-perms-assert.patch
dyld-elf-ppc32.patch
exegesis-mcjit.patch
graph-diff-simple.txt
hexagon.patch
macho32.patch
musl-ppc64-elfv2.patch
ppc-gcc-bug.patch
python3-test.patch
roundeven.patch
"
builddir="$srcdir/$_pkgname-project-$pkgver.src/llvm"
# ARM has few failures in test suite that we don't care about currently and
# also it takes forever to run them on the builder.
case "$CARCH" in
arm*) options="$options !check";;
esac
# Whether is this package the default (latest) LLVM version.
_default_llvm="no"
if [ "$_default_llvm" = yes ]; then
provides="llvm=$pkgver-r$pkgrel"
replaces="llvm"
fi
# NOTE: It seems that there's no (sane) way how to change includedir, sharedir
# etc. separately, just the CMAKE_INSTALL_PREFIX. Standard CMake variables and
# even LLVM-specific variables, that are related to these paths, actually
# don't work (in llvm 3.7).
#
# When building a software that depends on LLVM, utility llvm-config should be
# used to discover where is LLVM installed. It provides options to print
# path of bindir, includedir, and libdir separately, but in its source, all
# these paths are actually hard-coded against INSTALL_PREFIX. We can patch it
# and move paths manually, but I'm really not sure what it may break...
#
# Also note that we should *not* add version suffix to files in llvm bindir!
# It breaks build system of some software that depends on LLVM, because they
# don't expect these files to have a sufix.
#
# So, we install all the LLVM files into /usr/lib/llvm$_majorver.
# BTW, Fedora and Debian do the same thing.
#
_prefix="usr/lib/llvm$_majorver"
prepare() {
default_prepare
# https://bugs.llvm.org//show_bug.cgi?id=31870
rm test/tools/llvm-symbolizer/print_context.c
case $CARCH in
pmmx|x86|ppc|armhf|armv7)
# Appears to not work when building 32-bit code on 64-bit host.
rm test/tools/llvm-size/radix.test;;
esac
case $CARCH in
ppc)
# unknown issue, only used for bootstrapping (#1244)
for _failing_test in prettyprint_types.s \
simplified-template-names.s; do
rm test/tools/llvm-dwarfdump/X86/$_failing_test;
done;;
esac
# appears to be an issue on musl and glibc, but only fails on musl:
# https://github.com/NixOS/nixpkgs/blob/bb7e9e46/pkgs/development/compilers/llvm/8/llvm.nix#L74
rm -f test/CodeGen/AArch64/wineh4.mir
#1053
rm -fr \
test/tools/UpdateTestChecks \
test/ExecutionEngine/MCJIT/load-object-a.ll \
;
#1202
case $CARCH in
pmmx)
mv "$srcdir"/graph-diff-simple.txt \
test/tools/llvm-xray/X86/graph-diff-simple.txt ;;
esac
}
build() {
# Auto-detect it by guessing either.
ffi_include_dir="$(pkg-config --cflags-only-I libffi | sed 's|^-I||g')"
case $CTARGET_ARCH in
pmmx)
# The standard precision breaks more than it fixes; there are
# 4 failures in standard mode and only (different) 1 in fast.
export CXXFLAGS="$CXXFLAGS -fexcess-precision=fast";;
esac
# Disabled m68k because the endianness fix from llvm18 doesn't work.
cmake -G "Unix Makefiles" -Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/$_prefix \
-DCMAKE_VERBOSE_MAKEFILE=NO \
-DFFI_INCLUDE_DIR="$ffi_include_dir" \
-DLLVM_BINUTILS_INCDIR=/usr/include \
-DLLVM_BUILD_DOCS=OFF \
-DLLVM_BUILD_EXAMPLES=OFF \
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_BUILD_TESTS=ON \
-DLLVM_DEFAULT_TARGET_TRIPLE="$CBUILD" \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_FFI=ON \
-DLLVM_ENABLE_LIBCXX=OFF \
-DLLVM_ENABLE_PIC=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_ENABLE_TERMINFO=ON \
-DLLVM_ENABLE_ZLIB=ON \
-DLLVM_HOST_TRIPLE="$CHOST" \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_TARGETS_TO_BUILD='AArch64;AMDGPU;ARM;BPF;Hexagon;Lanai;Mips;MSP430;PowerPC;RISCV;Sparc;SystemZ;WebAssembly;X86;XCore' \
-Bbuild .
make -C build llvm-tblgen
make -C build
python3 utils/lit/setup.py build
}
check() {
make -C build check-llvm
}
package() {
make DESTDIR="$pkgdir" -C build install
cd "$pkgdir"/$_prefix
# Remove RPATHs.
file lib/*.so bin/* \
| awk -F: '$2~/ELF/{print $1}' \
| xargs -r chrpath -d
# Thread 3 requires a lot of stack space to LTO when targeting ARM.
# Note that this occurs even when crossing (on a ppc64 host).
chelf -s 1048576 bin/llvm-lto2
# Symlink files from /usr/lib/llvm*/bin to /usr/bin.
mkdir -p "$pkgdir"/usr/bin
for full_name in bin/*; do
bin_name=${full_name##*/}
# If this package provides=llvm (i.e. it's the default/latest
# llvm package), omit version infix/suffix.
if [ "$_default_llvm" = yes ]; then
link_name=$bin_name
# ..otherwise, add version infix/suffix to the executable name.
else case "$bin_name" in
llvm-*) link_name="llvm$_majorver-${bin_name#llvm-}";;
*) link_name="$bin_name$_majorver";;
esac
fi
case "$name" in
FileCheck | obj2yaml | yaml2obj) continue;;
esac
ln -s ../lib/llvm$_majorver/bin/$bin_name "$pkgdir"/usr/bin/$link_name
done
# Move /usr/lib/$pkgname/include/ into /usr/include/$pkgname/
# and symlink it back.
mkdir -p "$pkgdir"/usr/include/$pkgname
mv include/* "$pkgdir"/usr/include/$pkgname/
rmdir include
ln -s ../../include/$pkgname include
ln -s "$pkgdir"/usr/lib/cmake/llvm ../$pkgname/lib/cmake/llvm
}
static() {
pkgdesc="LLVM $_majorver static libraries"
_common_subpkg
mkdir -p "$subpkgdir"/$_prefix/lib
mv "$pkgdir"/$_prefix/lib/*.a "$subpkgdir"/$_prefix/lib/
strip -d "$subpkgdir"/$_prefix/lib/*.a
}
libs() {
pkgdesc="LLVM $_majorver runtime library"
main_soname="libLLVM-$_majorver.so"
ver_soname="libLLVM-$pkgver.so"
_common_subpkg
# libLLVM should be in /usr/lib. This is needed for binaries that are
# dynamically linked with libLLVM, so they can find it on default path.
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/$_prefix/lib/$main_soname "$subpkgdir"/usr/lib/
ln -s $main_soname "$subpkgdir"/usr/lib/$ver_soname
strip "$subpkgdir"/usr/lib/$ver_soname #797
# And also symlink it back to the LLVM prefix.
mkdir -p "$subpkgdir"/$_prefix/lib
ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/$main_soname
ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/$ver_soname
}
dev() {
_common_subpkg
default_dev
mkdir -p "$subpkgdir"/$_prefix/bin
mv "$pkgdir"/$_prefix/lib "$subpkgdir"/$_prefix/
mv "$pkgdir"/$_prefix/include "$subpkgdir"/$_prefix/
mv "$pkgdir"/$_prefix/bin/llvm-config "$subpkgdir"/$_prefix/bin/
}
_test_utils() {
pkgdesc="LLVM $_majorver utilities for executing LLVM and Clang style test suites"
depends="python3"
_common_subpkg
replaces=""
litver="$(python3 "$builddir"/utils/lit/setup.py --version 2>/dev/null \
| sed 's/\.dev.*$//')"
test -n "$litver" || return 1
provides="$provides lit=$litver-r$pkgrel"
cd "$builddir"/build
install -D -m 755 bin/FileCheck "$subpkgdir"/$_prefix/bin/FileCheck
install -D -m 755 bin/count "$subpkgdir"/$_prefix/bin/count
install -D -m 755 bin/not "$subpkgdir"/$_prefix/bin/not
python3 ../utils/lit/setup.py install --prefix=/usr --root="$subpkgdir"
ln -s ../../../bin/lit "$subpkgdir"/$_prefix/bin/lit
}
_common_subpkg() {
if [ "$_default_llvm" = yes ]; then
replaces="llvm${subpkgname#$pkgname}"
provides="$replaces=$pkgver-r$pkgrel"
fi
}
sha512sums="89a67ebfbbc764cc456e8825ecfa90707741f8835b1b2adffae0b227ab1fe5ca9cce75b0efaffc9ca8431cae528dc54fd838867a56a2b645344d9e82d19ab1b7 llvm-project-16.0.6.src.tar.xz
e6fec46f3a1183774e4a47b81f3287adc5aa28ebdd52f614c1111fb157cd3137d1b86e04ca76a92b192c900eb5fa4c44f0c00984da14f0a9bb3ee8e488773e00 llvm-fix-build-with-musl-libc.patch
8e694af50a9f1f8a3dcf7c0e1ce1165237011767e3514271984877882962e492057efd16f0e6e303ee534a48c039c8ec00ed8a34eb9e9826b0324100292695f9 disable-FileSystemTest.CreateDir-perms-assert.patch
962ea62f96927f397a234c8770fd5a41d5c8ef528de56da6da76908369ee0e9faca2fcba46b3957a928b8138b46c7c0d8c5f353088009e1921f9c3cfffd96081 dyld-elf-ppc32.patch
5f24f99e31b8e0d1d7a7253be028df55f3524ff600c037404a4870ed22c02467f378b222d7fdd3d7af5b1ef006a90ec0c32c44122771e2ea8763eb62dcfca9dc exegesis-mcjit.patch
a1533f4b9d35e1069fd065fbeb5fedce96fa49fdb007f994d8921d8a04cf2caadca276bbd9553ff86040b0f9dfce489c385fa2a7434e2dee3732942e6914db4e graph-diff-simple.txt
807587a0c897d47a01a846c5c4f7cbf1f2d16437a163b66ee2381a7147e9d04b0141b2c76d022db61903d0d2841ddb267ba98c66c9e41501ca41837659743df8 hexagon.patch
de9791cc476817782b553c4edab696132da4ed2b9a3d80dbf1b85b7dc7a8c5e4caf14f2f26e33c27cd80a91b36709d3b24caea910c0a6315ffbb297cb748468d macho32.patch
bec1fe4761dae33a8012a54b7bbdd179cac82febcd46ace1844772c06f207661c903f05fcb7a5ebbbece3e33a88b20a5d9b31b40e8a8cd5c626aec04cb6735be musl-ppc64-elfv2.patch
bda83678acb97be4d4236179792b3555b8000242fa6bd9e2e78dcd4f6182395df7fa9b8742fde946f19b668615ab37db8670340d43683787d36c540937bca523 ppc-gcc-bug.patch
89ef5fbab039b017a5652656adf17b680525f1c5dd0b1afc8034fe0b34a2ca196d87640f54cc826356cfcd88c6e5f10754b7e38f04ca49ede4f3864080b787bd python3-test.patch
5e0868a96ecd3344a4badb3c23e7e9060a96e3fc7cb4a092febca93eff8c040839041c7a3c8a29955541b585081f84ab8c1ced26198ac93ad2d9db616faf1088 roundeven.patch"