Compare commits

...

240 Commits

Author SHA1 Message Date
David Abdurachmanov 3f2f98416c
Merge remote-tracking branch 'up/main' into main-riscv64
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2023-12-04 22:38:03 +02:00
Nikita Popov 88b9baf112 Remove 32-bit arm handling, which is no longer supported 2023-11-29 13:50:23 +00:00
Nikita Popov 63b3c28c34 Remove redundant _lto_cflags define
ThinLTO is the default.
2023-11-29 13:50:23 +00:00
Nikita Popov 6f21bc0e93 Remove FEDORA_LLVM_LIB_SUFFIX handling
We used to carry a patch for the lit config. We don't do this
anymore so this is dead code.
2023-11-29 13:50:23 +00:00
Tulio Magno Quites Machado Filho d4938d5101 Update to LLVM 17.0.6 2023-11-29 05:00:43 -03:00
Tulio Magno Quites Machado Filho 627ccea788 Update to LLVM 17.0.5 2023-11-16 05:06:31 -03:00
David Abdurachmanov 4c68b46fdd
Rebuild with Clang
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2023-11-06 09:06:21 +02:00
David Abdurachmanov a7556e636e
Bring back GCC toolchain for now
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2023-11-04 14:46:12 +02:00
David Abdurachmanov e4e4fb58f5
Fix patch for -p2
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2023-11-04 14:11:20 +02:00
David Abdurachmanov 0524dcc8d4
Disable BR for Clang
We are trying to compile with GCC toolchain instead of Clang.

Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2023-11-04 13:35:14 +02:00
David Abdurachmanov 0d171bcd92
Add support for riscv64
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2023-11-04 13:08:42 +02:00
David Abdurachmanov 27e55c5c00
Merge remote-tracking branch 'up/main' into main-riscv64
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2023-11-04 10:04:07 +02:00
Tulio Magno Quites Machado Filho 2e43f864a5 Update to LLVM 17.0.4 2023-11-01 13:58:03 -03:00
Tulio Magno Quites Machado Filho 469438de55 Update to LLVM 17.0.3 2023-10-17 22:07:34 -03:00
Timm Bäder efe2f45aa0 Backport fix for RHEL-1650 2023-10-10 06:15:23 +02:00
Tulio Magno Quites Machado Filho c3ec280826 Update to LLVM 17.0.2 2023-10-04 15:50:52 -03:00
Tulio Magno Quites Machado Filho 522fd69676 Update to LLVM 17.0.1 2023-09-23 07:42:26 -03:00
Tulio Magno Quites Machado Filho 7ca2731b6f Revert "Drop dwarf4 patch in favor of config files"
This reverts commit 4d5309efc8 in order to
fix an issue where debug information is enabled by default even when -g
is not used.

Resolves: rhbz#2239619.
2023-09-19 13:32:00 -03:00
Tulio Magno Quites Machado Filho 8e7cc4af9d Move macros.clang to resource-filesystem
This is part of the Fedora change approved [1] which states the
following:

    The macros.clang file with RPM macros will be moved from the
    clang-devel package to the clang-resource-filesystem package.

[1] https://fedoraproject.org/wiki/Changes/LLVM-17
2023-09-19 11:21:13 -03:00
Alessandro Astone 2ad36cffbc Fix resource-filesystem after https://fedoraproject.org/wiki/Changes/LLVM-17 2023-09-19 11:03:06 -03:00
Tulio Magno Quites Machado Filho c4482a5a65 Update to LLVM 17.0.0 RC4 2023-09-10 08:44:05 -03:00
Tom Stellard 4d5309efc8 Drop dwarf4 patch in favor of config files 2023-09-06 23:14:34 +00:00
Yaakov Selkowitz b452d055c9 Update RHEL docs patch 2023-09-01 12:27:37 -04:00
Tulio Magno Quites Machado Filho e81bc4ecf9 Update to LLVM 17.0.0 RC3 2023-08-24 09:49:02 -03:00
Nikita Popov 5171a0f007 Rebase dwarf 4 patch 2023-08-24 09:47:19 -03:00
Tulio Magno Quites Machado Filho a399e92163 Update to LLVM 17.0.0 RC2 2023-08-23 14:24:17 -03:00
Tulio Magno Quites Machado Filho b3669793eb Update to LLVM 17.0.0 RC 1
This is also a squashed merge commit from upstream-snapshot (commit ID
13b971d3fcbf82d2) into rawhide whose most important commits from
upstream-snapshot are:

Konrad Kleine (57):
      Prepare for snapshot build
      Fix patches by using them from the streamline branch
      Fixed E: specfile-error error: line 491: Unclosed %if
      Fix error: Bad file: /var/lib/copr-rpmbuild/workspace/workdir-0qjlioil/srcdir/0007-cmake-Allow-shared-li
braries-to-customize-the-soname.patch: No such file or directory
      Must have forgotten this newly added 'clang_version' global
      Disable LTO for anything older than Fedora 34
      Add recommonmark to build deps
      Use new llvm_snashot_changelog_entry macro
      Use llvm_snapshot_version_suffix
      Fix RPM packaging bug:
      Default to DWARFv4
      Revert "Default to DWARFv4"
      Compile with DWARFv4
      Merge remote-tracking branch 'upstream/rawhide' into upstream-snapshot
      Try to address https://reviews.llvm.org/D119199
      Update patches
      Fixup patches
      Patches rebased
      Separate clang-tools-extra patches
      Try to fix clang build
      Rebased patches to fix issue with patch
      Make %autopatch verbose
      Also rename patch tag
      Avoid ld error
      Rebased patches
      Rebased clang patches
      Rebased clang-tools-extra patches
      First try to default to DWARF4 by default
      Produce DWARF4 by default
      Added pgo_instrumented_build conditional
      Make clang use the llvm-snapshot-builder
      Use %{llvm_snapshot_extra_source_tags} macro
      Fix %changelog not in descending chronological order
      Rebase patches
      Bring back clang
      Rebased patches and added third-party and cmake sources
      Adjust to https://reviews.llvm.org/D130586
      Disable LTO
      Manually apply https://reviews.llvm.org/D141581
      adjust /lib/ to /%{_lib}/
      Remove third party stuff and use gtest patch
      Rebased D138472
      Trace configure output
      Rebase D138472
      Assist find_package(LLVMGTest by setting hint dir to LLVM_CMAKE_DIR
      Merge remote-tracking branch 'origin/rawhide' into upstream-snapshot
      Add back 0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch
      Fixup 0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch
      Rebased 0001-clang-tools-extra-Make-test-dependency-on-LLVMHello-.patch
      Rebased 0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch
      Dropping 0001-Take-into-account-Fedora-Specific-install-dir-for-li.patch
      D142506 landed already
      Fix for the IEEE 128-bit fp error
      Fix RPM install of includes
      Merge remote-tracking branch 'origin/rawhide' into upstream-snapshot
      Remove already landed patches D141581 and D143736
      Rebase 0001-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch

Nikita Popov (7):
      Rebase downstream patches
      Rebase clang-tools-extra patches
      Add clang-offload-packager to clang_tools_binaries
      Rebase downstream patches
      Rebase LLVMHello patch
      Remove fno-openmp-implicit-rpath patches
      Restore fno-openmp-implicit-rpath patches

Tom Stellard (25):
      Revert patches that added LLVMHello dependency to clang-tools-extra tests
      Remove accidentally committed changes from previous commit
      Add clang-linker-wrapper and clang-pseudo binaries
      Add test for building an rpm with -fopenmp
      Add a smaller patch for fixing clang-tools-extra standalone build
      Update test name
      Add link to upstream patch for clang-tools-extra
      Update DWARF-4 patch to fix a test failure
      Rebase patch
      Emit DWARF4 by default
      Fix test after switch to DWARF4 default
      Fix dwarf test again
      Add workaround for build failure on i386/f36
      Remove accidentally committed change
      Add back -fno-openmp-implicit-rpath option
      Fix patch
      Remove patch that was committed upstream
      Update  -fno-openmp-implicit-rpath patches
      Drop openmp changes from patch
      Add fix for test failures on AArch64/f38+rawhide
      Revert "Add fix for test failures on AArch64/f38+rawhide"
      Update OpenMP rpath patch
      copr: Install llvm-snapshot-builder from the local COPR project
      Remove %clang_resource_dir_readonly macro
      Move clang-resource-dir to /usr/lib

sergesanspaille (5):
      Rebased clang-tools-extra patches
      Rebased clang-tools-extra patches
      rebase downstream patches
      Rebase downstream patches
      Rebase downstream patch
2023-08-11 10:18:00 -03:00
Tulio Magno Quites Machado Filho 074a2a75fb Remove pkg_bindir and pkg_libdir
1. Remove unused macro pkg_bindir.
2. Replace pkg_libdir with install_libdir.
2023-07-31 21:44:41 -03:00
Tulio Magno Quites Machado Filho fff5077f10 Fix compat build without tests and deduplicate BuildRequires
1. Set LLVM_INCLUDE_TESTS:BOOL=OFF in order to build clang without
   requiring googletest as we do not run the tests anyway.

2. Backport a patch from upstream that fixes the generation
   of *.exports.

3. Deduplicate a few BuildRequires entries.
2023-07-28 16:21:21 -03:00
Fedora Release Engineering 419d05e65c Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 15:44:40 +00:00
Tulio Magno Quites Machado Filho 461ef15b37 Fix rhbz#2221585
Module imp got removed from Python 3.12.

Source: https://docs.python.org/3/library/imp.html
2023-07-13 10:05:11 -03:00
Tulio Magno Quites Machado Filho 30d8eed669 Update to LLVM 16.0.6 2023-06-16 10:14:53 -03:00
Python Maint ff33483290 Rebuilt for Python 3.12 2023-06-16 11:20:52 +02:00
Nikita Popov 7c3f9440e3 Use llvm-cmake-utils package 2023-06-15 17:05:45 +02:00
Python Maint ec9fa021a9 Rebuilt for Python 3.12 2023-06-15 14:41:12 +02:00
Tulio Magno Quites Machado Filho efb4b42e9b Update to LLVM 16.0.5 2023-06-06 03:00:43 -03:00
Yaakov Selkowitz b534a5d607 Avoid recommonmark dependency in RHEL builds
python-recommonmark and its dependencies are unwanted in RHEL.  This is
based on changes already in c9s.
2023-05-22 15:57:24 +00:00
Tulio Magno Quites Machado Filho 92d3782fb4 Update to LLVM 16.0.4 2023-05-19 13:54:10 -03:00
Tulio Magno Quites Machado Filho 22846ba915 Remove patch for ppc64le triple
Prefer the python-lit patch from https://reviews.llvm.org/D149746
2023-05-15 17:11:48 -03:00
Tulio Magno Quites Machado Filho 90664d8d6a Update to LLVM 16.0.3 2023-05-10 07:13:20 -03:00
Tulio Magno Quites Machado Filho f6ef7a155e Update to LLVM 16.0.2 2023-04-26 11:23:02 -03:00
Nikita Popov 6afe272e01 Remove cmake source in favor of patch
Remove cmake source in favor of using LLVM_COMMON_CMAKE_UTILS
with the installed cmake files and a patch, same as is done in
some of the other subprojects.
2023-04-18 09:45:42 +02:00
Tulio Magno Quites Machado Filho 99fab00322 Update to LLVM 16.0.1 2023-04-12 22:22:34 -03:00
Jan200101 9a88eef781 Move LLVM_CMAKE_DIR to compat builds
partially reverts 1903e547f9
2023-04-12 17:49:32 +00:00
Timm Bäder 1ed3539a3f Use correct source for macros file 2023-04-12 13:57:07 +02:00
Tulio Magno Quites Machado Filho 26e1e72603 Remove pocl-related tests
pocl has been FTBFS since Fedora 38. There is a plan to orphan it.
2023-04-04 17:13:57 -03:00
Tulio Magno Quites Machado Filho 1903e547f9 Remove unnecessary patch and macro 2023-03-31 09:23:13 -03:00
Tulio Magno Quites Machado Filho 914aca4e35 Update to LLVM 16.0.0 2023-03-21 08:55:44 -03:00
Tulio Magno Quites Machado Filho daaf0ad7ab Fix ppc64le tests with the right triple 2023-03-17 08:17:08 -03:00
Tulio Magno Quites Machado Filho f419afebc4 Update to LLVM 16.0.0 RC4 2023-03-15 14:20:42 -03:00
Tulio Magno Quites Machado Filho 4cb2bd60c5 Fix RPM macro clang_resource_dir 2023-03-14 17:10:39 -03:00
Tulio Magno Quites Machado Filho 1bafe64a40 Update to LLVM 16.0.0 RC3 2023-03-03 10:16:01 -03:00
Tulio Magno Quites Machado Filho af8d183fda Improve .gitignore
Replace many entries with a few entries with globs.
Add new files and directories in order to prevent unintentional changes.
2023-02-16 17:08:11 -03:00
Tulio Magno Quites Machado Filho 0d9e478352 Remove unnecessary file
This file stopped being used in 2020.
2023-02-16 17:05:53 -03:00
Tulio Magno Quites Machado Filho e9eca7e273 Add more fixes to clang 16.0
1. Remove patches that are not necessary.
2. Re-add a patch that generates DWARF4 by default.
3. Add a patch fixing IEEE 128-bit long double tests on ppc64le.
4. Include cmake code.
5. Other minor issues.

Part of these changes are heavily based on or copied from the work from
Konrad Kleine in branch upstream-snapshot.
2023-02-16 16:24:14 -03:00
Konrad Kleine 9a7b4ac902 Add back 0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch 2023-02-16 16:24:14 -03:00
Konrad Kleine 0f9040cc95 Assist find_package(LLVMGTest by setting hint dir to LLVM_CMAKE_DIR 2023-02-16 16:24:14 -03:00
Konrad Kleine 7ac8248795 Remove third party stuff and use gtest patch 2023-02-16 16:24:14 -03:00
Konrad Kleine 0d77a0c30a adjust /lib/ to /%{_lib}/
fixes this error:

```
mv: cannot stat '/builddir/build/BUILDROOT/clang-16.0.0~pre20230122.g6aaac4c144572d-1.fc36.x86_64/usr/lib/libear': No such file or directory
mv: cannot stat '/builddir/build/BUILDROOT/clang-16.0.0~pre20230122.g6aaac4c144572d-1.fc36.x86_64/usr/lib/libscanbuild': No such file or directory
```
2023-02-16 16:24:14 -03:00
Konrad Kleine 1919c1aecc Manually apply https://reviews.llvm.org/D141581 2023-02-16 16:24:14 -03:00
Tulio Magno Quites Machado Filho e1ea575c35 Update to LLVM 16.0.0 RC1 2023-02-16 16:24:14 -03:00
Tulio Magno Quites Machado Filho 809237e79b Adopt SPDX identifiers in license
Also make it clear that Apache 2.0 with LLVM exceptions was adopted in
2019.
2023-01-19 15:48:40 -03:00
Fedora Release Engineering 4d3ffb7f8b Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-18 23:56:02 +00:00
Nikita Popov 26eb3b048d Update to LLVM 15.0.7 2023-01-12 16:25:10 +01:00
Nikita Popov d59ff31f26 Fix resource-filesystem ownership conflict
Fix rbhz#2100122.
2023-01-12 16:20:03 +01:00
Tom Stellard c54c083a33 Omit frame pointers when building 2023-01-12 15:17:53 +00:00
Timm Bäder 3fcf35e97c Pass -vv to lit
So it prints all the executed test cases.
2023-01-11 16:05:58 +01:00
Nikita Popov 573860f707 Remove abi_revision handling
We no longer ship RCs in Fedora, so this is no longer necessary.
This was already done for the llvm package, do it for clang as well.
2023-01-04 15:30:20 +01:00
Nikita Popov be819276e8 Add clang-devel dep to python3-clang
python3-clang requires libclang.so, which is part of clang-devel.
2022-12-21 16:37:30 +01:00
Yaakov Selkowitz a969e612e9 Use -mabi=ieeelongdouble in ELN 2022-12-21 05:36:08 +00:00
Nikita Popov daa332df14 Backport patches for ucrt64 toolchain detection 2022-12-19 16:46:42 +01:00
Jan200101 64ea1d4d0f
explicitly define directories for compat builds 2022-12-06 10:16:23 +01:00
Nikita Popov e132ea80d7 Update to LLVM 15.0.6 2022-12-05 13:05:14 +01:00
Jesus Checa Hidalgo 5af8b98903 build-gating.fmf: add brp-llvm-compile-lto-elf test from redhat-rpm-config to gating test plan 2022-11-28 11:25:35 +00:00
Nikita Popov 71aa74debd Build test deps separately to avoid LD_LIBRARY_PATH interference
Otherwise invocations of host clang will use the newly built
libraries, which will use a non-existent resource directory, and
thus cause headers like stddef.h not to be found.
2022-11-04 16:04:45 +01:00
Nikita Popov abec3da8de Update to LLVM 15.0.4 2022-11-03 17:13:33 +01:00
Nikita Popov 54612cbb68 Enable ieeelongdouble for ppc64le, fix rhbz#2136099 2022-10-24 11:18:12 +02:00
Nikita Popov 4e04207871 Default to non-pie, fix rhbz#2134146 2022-10-13 09:59:39 +02:00
sergesanspaille 3169a3253a Package clang-tidy headers in clang-tools-extra-devel, fix rhbz#2123479 2022-10-05 22:20:09 +02:00
Nikita Popov 14e25ec29a Add patch for inline builtins with asm label 2022-09-22 10:12:07 +02:00
sergesanspaille df64681647 Improve integration of llvm's libunwind 2022-09-21 11:15:09 +02:00
Jesus Checa Hidalgo f15eec4d81 Migrate tests to tests/clang repo 2022-09-19 08:11:18 +00:00
Nikita Popov 431a66ade2 Add more test updates
Some more changes missed in the previous commit.
2022-09-14 12:35:23 +02:00
Nikita Popov 0b6571588e Add more test updates to patch 2022-09-14 11:54:16 +02:00
Nikita Popov 668f77d207 Downgrade implicit int and implicit function declaration to warning only
This backports a fix for a major regression that will be part of
the 15.0.1 release.

See https://reviews.llvm.org/D133800 and
https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213.
2022-09-14 09:43:24 +02:00
Nikita Popov 3389ce3d4f Fix compat build
Backport changes from clang14 package. We need to exclude patches
for clang-format (which we don't build for compat packages).
Additionally, clang14-devel needs a dependency on clang14-libs,
otherwise this only installs dead symlinks without the shared
objects they point to.
2022-09-08 10:11:57 +02:00
Nikita Popov c55124d032 Fix i686 build 2022-09-07 17:12:29 +02:00
Nikita Popov 71bc065af9 Update to LLVM 15.0.0 2022-09-07 09:28:12 +02:00
sergesanspaille 7808ecbcca Add a Recommends on libatomic, see rhbz#2118592 2022-08-29 11:19:34 +02:00
David Abdurachmanov 4926d6f0d7
Ignore test suite failures on riscv64
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2022-08-23 13:44:59 +03:00
David Abdurachmanov df580a8feb
Prepare for riscv64
Signed-off-by: David Abdurachmanov <davidlt@rivosinc.com>
2022-08-22 09:17:39 +03:00
Nikita Popov 2b8dcb4dbf Revert powerpc -mabi=ieeelongdouble default
Revert the abi default again until
https://bugzilla.redhat.com/show_bug.cgi?id=2115752 is fixed.

This reverts commit 2efd3e3d10.
2022-08-10 10:34:59 +02:00
Tom Stellard 2efd3e3d10 Revert "Revert "Use the ieee128 format for long double on ppc64le" until rhbz#2100546 is fixed"
This reverts commit e26357988c.
2022-08-04 16:07:03 +00:00
Amit Shah 4bdb1778ec Switch to using the dist_vendor macro for distribution vendor
The new dist_vendor macro[1] in fedora-release helps simplify spec files
by removing the conditionals for populating the distro.

[1] https://src.fedoraproject.org/rpms/fedora-release/pull-request/223
2022-07-28 12:29:58 +05:30
Jesus Checa Hidalgo 718bd7a127 tests: fedora-flags
* Fixed broken dependency on annobin. Requiring just redhat-rpm-config
should pull the correct annobin rpm
* Added SCL specific requirements for LLVM 13 and 14
2022-07-21 06:48:03 +00:00
Fedora Release Engineering 0ca250eb5b Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-20 23:00:58 +00:00
Miro Hrončok e26357988c Revert "Use the ieee128 format for long double on ppc64le" until rhbz#2100546 is fixed
This reverts commit 27327ff4a8.

This disables the ppc64le-long-double test.
2022-06-30 16:43:44 +02:00
Timm Bäder a679a440e9 Update to 14.0.5
Increase version and drop ununeeded patches.
2022-06-14 10:48:48 +02:00
Timm Bäder ec23c296ca Drop unused variable 2022-06-14 10:47:55 +02:00
Python Maint 561ebf3c43 Rebuilt for Python 3.11 2022-06-13 20:38:39 +02:00
Jesus Checa Hidalgo 4de77856dd Tests: make openmp-rpm test compatible with RHEL distros and collections 2022-06-01 11:59:02 +02:00
Tom Stellard 475a496cb9 Update openmp-rpm test to pass LDFLAGS
This is needed after -fno-openmp-implicit-rpath was moved from CFLAGS
to LDFLAGS.
2022-05-31 11:36:53 -07:00
Jesus Checa Hidalgo 22c49c99fc tests: ppc64le-long-double
Split the test in two. For Fedora CI we run on x86_64 emulating
ppc64le using qemu+mock. For RHEL/CentOS run natively.
2022-05-27 09:24:34 +02:00
Tom Stellard 27327ff4a8 Use the ieee128 format for long double on ppc64le
gcc switched to ieee128 as the default in Fedora >=36, so clang needs to do
this to maintain ABI compatibility.
2022-05-25 08:48:45 +00:00
Tom Stellard a0406226b5 Add missing dependency to the fedora-flags test
Other packages that use this test won't have clang pre-installed, so we
need to explicitly add the dependency.
2022-05-25 02:01:05 +00:00
Jesus Checa Hidalgo 5f6483f6cd tests: Update extra repos in different distros.
* epel removed from RHEL-7
* CRB split in RHEL 8/9 vs CentOS due to different naming
2022-05-23 21:00:05 +00:00
Jesus Checa Hidalgo 4cce509493 tests: llvm-test-suite: Add missing ninja-build requirement 2022-05-19 15:20:31 +00:00
Tom Stellard 906570b432 Add test for building an rpm with -fopenmp 2022-05-19 03:03:36 +00:00
Jesus Checa Hidalgo 4ae8585417 tests: fix lld unavailability in ppc64 for toolchains tests 2022-05-04 14:16:56 +00:00
Jesus Checa Hidalgo a52939e013 tests: check that clang uses dwarfv4 by default 2022-05-03 14:22:33 +02:00
Mystro256 c00fbc715c Add patch to allow packaging rocm-hip
ROCm's HIP could not be packaged in Fedora due to a bug, which was fixed in
trunk. Instead of waiting for llvm 15, cherry-pick the fix.
2022-05-03 08:58:43 +00:00
Jesus Checa Hidalgo 7e17ee7279 tests: add llvm-toolset-14.0 requirements to tests and plans 2022-04-22 10:59:57 +00:00
Tom Stellard dc76251478 Update DWARF4 patch to fix Driver/clang-g-opts.c 2022-03-29 23:21:25 +00:00
sergesanspaille e61ef837ae Upload new sources 2022-03-29 18:41:27 +02:00
Timm Bäder add0accd52 Update to 14.0.0 2022-03-29 09:37:56 +02:00
Timm Bäder 822eb1d32d Remove some unneeded variables
Just move them to their only place of use.
2022-03-09 15:08:13 +01:00
Jesus Checa Hidalgo 69ffbbfd14 tests: remove llvm-toolchain test as it has been superseeded by tests/toolchains 2022-02-21 13:57:19 +01:00
Jesus Checa Hidalgo 806afe0a28 tests: fix tests/rhbz-1647130 missing clang-analyzer requirement 2022-02-21 11:05:23 +01:00
Tom Stellard eaac7c9b00 Fix some rpmlinter errors 2022-02-17 19:06:56 +00:00
Jesus Checa Hidalgo f5cc68e457 tests: toolchains: skip testing with compiler-rt in s390x 2022-02-15 18:13:09 +01:00
Jesus Checa Hidalgo 75406a880d tests: fix fmf error in tests/fedora-flags 2022-02-15 17:11:34 +00:00
Jesus Checa Hidalgo 442544ac1b tests: disable libomp plan and test in s390x 2022-02-15 17:33:53 +01:00
Jesus Checa Hidalgo 12f649bbd7 tests: Add all missing requirements for tests/toolchains 2022-02-15 17:31:12 +01:00
Jesus Checa Hidalgo 8d94b3d903 tests: test fixes for SCL-ized llvm-toolset-13 in RHEL-7 2022-02-15 17:29:50 +01:00
Serge Guelton 9e607ef75e Merge #139 `compat_build fixes for clang 13` 2022-02-15 16:25:08 +00:00
Miloš Prchlík 208be5f577 tests: on RHEL-7, throw in epel-rpm-macros to get %{build_cflags}
Unfortunately, this disqualifies the test from s390x, because there is no Epel for s390x. The test would just fail.
2022-02-15 16:21:04 +00:00
Jesus Checa Hidalgo 56439f6521 tests: fix llvm-toolchain and toolchains test requirements for centos and rhel 2022-02-15 16:14:02 +00:00
Jesus Checa Hidalgo 70e5471c2f tests: Disable unsupported tests in CentOS 2022-02-14 15:31:20 +01:00
Jesus Checa Hidalgo d280ec1256 tests: enable CRB/EPEL in CentOS/RHEL 2022-02-11 12:08:03 +01:00
Miloš Prchlík 0534535cdb tests: toolchains test requires glibc-static 2022-02-08 10:22:14 +00:00
Nikita Popov 7dba2783b7 Work around gcc miscompile
This works around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104334,
which miscompiles clang on s390x and ppc64le. The issue is already
fixed on the gcc side and a new fedora build is in progress, but
including this as a temporary workaround to get a working build.
2022-02-03 10:46:54 +01:00
Nikita Popov 563751ce6b Update to LLVM 13.0.1 final 2022-02-03 09:53:41 +01:00
Nikita Popov aecb4c8477 Update to LLVM 13.0.1rc3 2022-02-01 09:18:47 +01:00
Fedora Release Engineering f0fcd739ad - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-19 23:17:35 +00:00
Nikita Popov 2932468044 Update to LLVM 13.0.1rc2 2022-01-14 03:15:06 -05:00
Nikita Popov 5b7b147c3b Update to LLVM 13.0.1rc1 2022-01-12 03:18:21 -05:00
Miloš Prchlík 23fb27dabb tests: add support for SCL-ized LLVM 13 (llvm-toolset-13.0) 2022-01-05 14:17:16 +01:00
Miloš Prchlík 68259514b8 tests: skip PoCL plan/test on RHEL
PoCL is not shipped on RHEL.
2022-01-04 14:41:25 +00:00
Tom Rix 9625344c39 compat_build: remove scanview helpers from buildroot
scanview and other tools are not built so these libraries
are not needed, so remove them.

Resolves a build but not packaged error.

Signed-off-by: Tom Rix <trix@redhat.com>
2021-12-15 11:47:08 -08:00
Tom Rix 715c4e65ee compat_build: use llvm-config from the llvm compat build
The regular llvm build installs llvm-config-N to _bindir
The compat_build llvm build install llvm-config-N to pkg_bindir
Use the pkg_bindir one.

Fixes a build error
error: File not found: .../rpmbuild/BUILDROOT/
  clang13-13.0.0-5.fc36.x86_64/usr/lib64/llvm13/lib/*.so.*

Signed-off-by: Tom Rix <trix@redhat.com>
2021-12-15 05:38:00 -08:00
Tom Rix 993e8358ae compat_build: remove pyc BuildRequires
This error is seen on the compat_build
find: '.../rpmbuild/BUILDROOT/clang13-13.0.0-5.fc36.x86_64/
  usr/lib/python3.10/site-packages': No such file or directory

python3-clang is not part of the compat_build so ifdef out
the problem area.

Signed-off-by: Tom Rix <trix@redhat.com>
2021-12-14 10:10:54 -08:00
Miloš Prchlík e9354929da tests: llvm-test-suite test on RHEL
llvm-test-suite package is not shipped on RHEL.
2021-12-07 16:32:20 +01:00
Milos Prchlik f1fb141ebf tests: rename fmf files to match the llvm naming scheme for plans 2021-12-01 16:35:03 +01:00
Milos Prchlik 5f6796def1 tests: parametrize "libc++" in tests
Downstream has no `libc++`, but it can run clang tests with `libstdc++`.
Parametrize the tests, leaving the actual library to use on their
respective `main.fmf` files that are easier to overturn in downstream
repos.
2021-11-23 17:16:17 +01:00
Konrad Kleine 90e30031a9 Fix %check when --without=check is given
Otherwise the %check section will always fail with "false".

This fixes my commit from before: 8dae109a67
2021-11-15 15:28:53 +01:00
Tom Stellard 6699b0a7c6 Make lld the default linker on arm
Making lld the default linker on arm due to rhbz#1918924.
2021-10-28 05:35:02 +00:00
Tom Stellard a6f7984d83 Fix changelog 2021-10-28 05:34:16 +00:00
Tom Stellard bf0177da16 Remove Conflicts: compiler-rt for newer versions of compiler-rt
The clang-resource-filesystem package will now prevent a
compiler-rt >= 11.0.0 package from being installed at the same time as a
newer clang package, so we no longer need to add a conflicts here.
2021-10-27 23:57:19 +00:00
Milos Prchlik e9b18560f7 Remove single quotes from plan name, tmt cannot handle it 2021-10-21 13:54:44 +00:00
Milos Prchlik 1fec42430c Bump duration of llvm-test-suite, starting with 1h 2021-10-21 13:54:44 +00:00
Milos Prchlik 148aac0b7d Fixes tests/llvm-test-suite requirements and permissions 2021-10-21 13:54:44 +00:00
Milos Prchlik f7ecf95dc7 tests: switch to TMT 2021-10-21 13:54:44 +00:00
Timm Bäder cd6d62e280 Skip rpath using CMAKE_SKIP_RPATH
Like all other packages do it
2021-10-19 12:28:07 +00:00
Timm Bäder e87e2f553b Use py3_shebang_fix macro
As documented in
https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_shebang_macros
2021-10-15 13:38:11 +02:00
Timm Bäder 967d1e9cb7 Change a %bcond usage to %without 2021-10-13 10:54:26 +02:00
Tom Stellard fde900e4dd Fix gcc detection with redhat triples 2021-10-06 23:36:55 +00:00
Tom Stellard 2fb038f9a7 Drop abi_revision from soname
This way we match the upstream soname for the final release.
2021-10-05 15:14:37 +00:00
Tom Stellard bfd11a3fd2 13.0.0 Release 2021-10-01 20:36:30 +00:00
Tom Stellard 3752a31b44 13.0.0-rc3 Release 2021-09-18 03:38:14 +00:00
Konrad Kleine 8dae109a67 Add --without=check option
see also https://src.fedoraproject.org/rpms/llvm/pull-request/105
2021-09-14 09:14:24 +02:00
sergesanspaille 6f2884179b Apply scan-build-py integration patch 2021-09-13 11:45:27 +02:00
Tom Stellard d99713b7d0 Add macros.clang file 2021-09-09 19:09:15 +00:00
Tom Stellard a5df6c712b 13.0.0-rc1 Release 2021-08-09 20:47:43 +00:00
Tom Stellard f2a6113c88 Fix compat build 2021-07-22 16:27:04 +00:00
Fedora Release Engineering c5f66f800b - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-21 19:31:40 +00:00
Fedora Release Engineering 075bc1b24f - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-21 14:34:23 +00:00
Tom Stellard 236196a1cd 12.0.1 Release 2021-07-13 22:40:28 +00:00
Tom Stellard 3dd3a6dfd6 Fix ambiguous python shebangs 2021-07-09 02:43:33 +00:00
Tom Stellard 2bf74be714 12.0.1-rc3 Release 2021-07-01 09:02:57 +00:00
sergesanspaille 2afe5dbfcc Add generic integration test suite gating 2021-06-24 09:10:49 +02:00
Tom Stellard 8ef0cdb22d Only enable -funwind-tables by default on Fedora arches
.eh_frame sections confuse bpf tools, so -funwind-tables  shouldn't be enabled there.
There are other non-CPU arches where this could potentially cause problems, so be
conservative and only enable this on CPU arches supported by Fedora.
2021-06-08 17:41:09 +00:00
Python Maint 696be3e7c7 Rebuilt for Python 3.10 2021-06-04 19:19:07 +02:00
Tom Stellard 1a54a323be 12.0.1-rc1 Release 2021-06-01 21:22:55 +00:00
sergesanspaille 93869e0cb0 Use the alternative-managed version of llvm-config 2021-05-21 21:18:53 +00:00
Tom Stellard 4125daf6f5 Revert "Run fedora-flags test on all architectures"
This reverts commit bd66e3d65a.

This test is wrong, because it tests the current version of clang
from rawhide and not from the build being tested.
2021-05-19 01:25:57 +00:00
Tom Stellard bd66e3d65a Run fedora-flags test on all architectures 2021-05-06 21:19:01 +00:00
Timm Bäder 545fd2466b spec: Unconditionally use python3
The spec file was already unconditionally depend on a few python3
packages. Make that official by removing the %python3 bcond.
2021-05-06 21:18:16 +00:00
Konrad Kleine 89c3d8eb13 Replace global compat_build with bcond 2021-05-05 22:53:09 +02:00
Tom Stellard 81370f3bc6 12.0.0 Release 2021-04-16 22:21:45 +00:00
Tom Stellard e8cbe820c4 Add symlink to clang-format-diff in /usr/bin
rhbz#1939018
2021-04-16 05:03:55 +00:00
Tom Stellard 13c66032d5 Import tests from tests/clang repository
It's not necessary to store the tests in a separate repository, since
other packages can just reference the tests in this repo.

Also update, the other tests to pull from git repos in the rpms namespace.
2021-04-14 22:02:41 +00:00
sergesanspaille 56c57e4695 New upstream release candidate 2021-04-08 14:19:59 +02:00
Tom Stellard 72a26e56a1 Add libcxx-static as a test dependency
This fixes the clang/toolchains CI test.
2021-04-05 20:36:45 +00:00
sergesanspaille 3f6550f0f1 Make python3-clang bytecode reproducible across arches 2021-04-04 19:25:09 +02:00
sergesanspaille e1a87504e4 New upstream release candidate 2021-04-02 12:44:06 +02:00
Jonathan Wakely b4f38b0df7 Rebuilt for removed libstdc++ symbols (#1937698) 2021-03-31 17:31:26 +01:00
sergesanspaille 08bee7e51a Simplify patch management through %autopatch 2021-03-17 08:35:44 +01:00
sergesanspaille c1e69a30ae Apply patch D97846 to fix rhbz#1934065 2021-03-16 09:56:09 +01:00
Timm Bäder 283f2301df set CLANG_DEFAULT_UNWIND_LIB instead of using custom patch
And add the clang/toolchains test so we don't regress
2021-03-15 10:01:21 +01:00
sergesanspaille 6fb3a469a9 LLVM 12.0.0 rc3 2021-03-11 14:54:30 +01:00
sergesanspaille bfcdcf4a7d rebuilt 2021-03-09 21:01:15 +01:00
sergesanspaille d803ebb6bc Rename, cleanup and normalize patch serie 2021-03-02 14:40:08 +01:00
sergesanspaille 333b956fb4 Reapply some wrongly removed patch 2021-03-01 16:20:42 +01:00
sergesanspaille 1ca8ec6bba Remove patch applied upstream 2021-02-24 18:16:35 +01:00
sergesanspaille 8dfbf069f3 Revert "Remove patch applied upstream"
This reverts commit 2d1a36c4ef.
2021-02-24 15:44:38 +01:00
sergesanspaille c6d4e3d591 Revert "Remove patch applied upstream"
This reverts commit 30f111b116.
2021-02-24 15:44:18 +01:00
sergesanspaille 2d1a36c4ef Remove patch applied upstream 2021-02-24 15:43:42 +01:00
sergesanspaille 30f111b116 Remove patch applied upstream 2021-02-24 15:42:42 +01:00
sergesanspaille 52abd3940f 12.0.0-rc2 release 2021-02-24 15:36:04 +01:00
sergesanspaille 620fd8a49a Backport compat package updates 2021-02-23 17:26:11 +01:00
sergesanspaille cef168d215 llvm 12.0.0rc2 2021-02-16 16:30:31 +01:00
Konrad Kleine 1d5bee47d5 Remove no longer applied patch files 2021-02-15 10:29:04 +01:00
Tom Stellard 56d54b9e15 Silence some rpmlint errors 2021-02-10 05:59:14 -08:00
Tom Stellard efa9dd65f1 Remove some unnecessary scan-view files 2021-02-10 05:59:12 -08:00
Fedora Release Engineering c631efb4f7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-26 02:02:11 +00:00
sergesanspaille 58487a9e58 11.1.0-rc2 release 2021-01-22 18:27:58 +01:00
sergesanspaille a60f8bc1c9 rebuilt with https://reviews.llvm.org/D94941 applied. 2021-01-20 23:36:14 +01:00
sergesanspaille 81f9d35924 11.1.0-rc1 release 2021-01-14 17:22:44 +01:00
sergesanspaille a0ab815b1d LLVM 11.0.1 final 2021-01-10 08:37:43 +01:00
sergesanspaille 42917e7959 llvm 11.0.1-rc2 2020-12-22 18:55:21 +01:00
Tom Stellard 8c1d8074da Don't build with -flto 2020-12-16 13:59:49 -08:00
sergesanspaille ad6c72f2fe llvm 11.0.1-rc1 2020-12-01 21:28:10 +00:00
Stephen Kitt 2ecc8463e7
Describe weak dependencies
clang has a couple of indirect weak dependencies; installing clang
without those will cause it to fail in certain use cases, but its
description doesn't mention them which makes resolving this harder
than it could be.

This patch adds a brief description of the weak dependencies to the
main clang package description.

Closes: #1879410
Signed-off-by: Stephen Kitt <skitt@redhat.com>
2020-11-19 09:52:10 +01:00
Tom Stellard c66b44eecb Add CI test for compiling programs with fedora compiler flags 2020-10-30 14:26:21 +00:00
Tom Stellard 32b8b533d1 Remove -ffat-lto-objects compiler flag 2020-10-29 12:05:31 -07:00
Tom Stellard 5bff53b37b Add clang-resource-filesystem sub-package
Packages that need to read or write files from the clang resource
directory should Require this sub-package.  This will ensure that we
won't have packages continuing to use older versions of the clang
resource directory when clang is updated.
2020-10-28 20:58:54 -07:00
Tom Stellard bf527b3382 Fix libomp CI test
We need to uninstall clang at the beginning of this test along with libomp,
so that we can later install clang to test that it has the correct dependency on
libomp.  If we don't uninstall clang along with libomp at the beginning, then
clang won't be installed later and libomp won't get pulled back in.
2020-10-28 20:58:54 -07:00
sergesanspaille 1605d80522 Fix NVR 2020-10-15 05:16:42 +00:00
sergesanspaille 59644519b1 llvm 11.0.0 - final release 2020-10-12 11:30:06 +00:00
sergesanspaille b4a94df45b 11.0.0-rc6 2020-10-08 09:12:09 +00:00
sergesanspaille 2d021a47b3 11.0.0-rc5 Release 2020-10-02 07:14:54 +00:00
sergesanspaille 2ac3ba8deb Fix NVR 2020-09-27 13:13:49 +00:00
sergesanspaille e371ba7a8f 11.0.0-rc3 Release 2020-09-25 17:01:49 +00:00
sergesanspaille 70febad3d8 Fix toolchain search path
Re-activate a patch by tstellar to prefer gcc toolchains with libgcc_s
2020-09-23 17:46:58 +00:00
sergesanspaille 033a6e8acd Disable ABI test suite in gating
the CI bots don't have enogh FS space
2020-09-22 05:30:38 +00:00
sergesanspaille fd536b6e06 Normalize some doc directory locations
Remove obsolete patch
2020-09-01 14:14:09 +00:00
sergesanspaille 1167eb14a2 11.0.0-rc2 Release
Also use %license macro
2020-09-01 09:49:45 +00:00
Tom Stellard 892c49fa88 Fix test failures 2020-08-13 21:44:36 -04:00
Tom Stellard 46e006a53e 11.0.0-rc1 Release 2020-08-10 18:30:38 -04:00
Tom Stellard 8c8d9c672c Remove Requires: emacs-filesystem
The emacs plugins are shipped with clang-tools-extra, which already
Requires: emacs-filesystem, so the main package does not need to
have a dependency on this.
2020-08-04 05:54:33 +00:00
Fedora Release Engineering 01b6b5c70e - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-08-01 00:22:28 +00:00
Jeff Law 4c025cdf78 Disable LTO on arm and i686 2020-07-28 13:14:21 -06:00
Fedora Release Engineering 8eeb41a108 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-27 14:02:33 +00:00
sergesanspaille 82aa4d3bba Update cmake macro usage
Finalize source verification
2020-07-20 14:48:52 +00:00
Tom Stellard f923b525f1 Add cet.h header 2020-06-26 21:12:10 +00:00
Aleksandra Fedorova f1e3f547a4 Update gating test name
Messaging scheme has changed and old centos-related test names are now deprecated.

See https://pagure.io/fedora-ci/general/issue/110
2020-06-26 05:11:16 +00:00
Tom Stellard e2a664c75a Accept multiple --config options
redhat-rpm-config now adds --config to CFLAGS when the macro
%toolchain is set to clang.  Some packages end up adding CFLAGS
twice to their compiler commands, so we need to patch clang to
allow multiple --config options so that these packages won't
fail to compile.
2020-06-16 23:37:19 +00:00
Dan Čermák 43b5ca7f2b Add symlink to %%{_libdir}/clang/%%{maj_ver}
This is required for packages like ccls that hardcode the link to clang's
resource directory to not require rebuilds on minor version bumps
2020-06-03 13:58:42 +00:00
Miro Hrončok a62c5d08c0 Rebuilt for Python 3.9 2020-05-25 12:47:19 +02:00
sergesanspaille d933922e69 Backport ad7211df6f257e39da2e5a11b2456b4488f32a1e, see rhbz#1825593 2020-05-19 13:15:35 +00:00
30 changed files with 1774 additions and 661 deletions

17
.copr/Makefile Normal file
View File

@ -0,0 +1,17 @@
# See https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
# See for the --setopt option in the enabling of copr repo see:
# https://pagure.io/copr/copr/issue/184
COPR_USERNAME=$(shell rpm --eval %copr_username)
COPR_PROJECT=$(shell rpm --eval %copr_projectname)
.PHONY: srpm
srpm:
dnf install -y dnf-plugins-core fedora-packager
dnf copr enable -y --setopt=reposdir=/tmp/yum.repos.d $(COPR_USERNAME)/$(COPR_PROJECT)
dnf install -y --setopt=reposdir=/tmp/yum.repos.d llvm-snapshot-builder
rpmbuild \
--define "_srcrpmdir $(outdir)" \
--define "_sourcedir $(shell pwd)" \
--define "_disable_source_fetch 0" \
-bs $(spec)

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

106
.gitignore vendored
View File

@ -1,101 +1,5 @@
/cfe-3.7.1.src.tar.xz
/clang-3.8.0-0.1.fc24.src.rpm
/cfe-3.8.0rc2.src.tar.xz
/cfe-3.8.0rc3.src.tar.xz
/cfe-3.8.0.src.tar.xz
/cfe-3.9.0.src.tar.xz
/cfe-3.9.1.src.tar.xz
/clang-tools-extra-3.9.1.src.tar.xz
/cfe-4.0.0.src.tar.xz
/clang-tools-extra-4.0.0.src.tar.xz
/test-suite-4.0.0.src.tar.xz
/cfe-4.0.1.src.tar.xz
/test-suite-4.0.1.src.tar.xz
/clang-tools-extra-4.0.1.src.tar.xz
/cfe-5.0.0.src.tar.xz
/test-suite-5.0.0.src.tar.xz
/clang-tools-extra-5.0.0.src.tar.xz
/clang-tools-extra-5.0.1.src.tar.xz
/cfe-5.0.1.src.tar.xz
/test-suite-5.0.1.src.tar.xz
/cfe-6.0.0rc1.src.tar.xz
/clang-tools-extra-6.0.0rc1.src.tar.xz
/test-suite-6.0.0rc1.src.tar.xz
/cfe-6.0.0rc2.src.tar.xz
/test-suite-6.0.0rc2.src.tar.xz
/clang-tools-extra-6.0.0rc2.src.tar.xz
/cfe-6.0.0.src.tar.xz
/test-suite-6.0.0.src.tar.xz
/clang-tools-extra-6.0.0.src.tar.xz
/cfe-6.0.1rc1.src.tar.xz
/clang-tools-extra-6.0.1rc1.src.tar.xz
/test-suite-6.0.1rc1.src.tar.xz
/cfe-6.0.1rc2.src.tar.xz
/clang-tools-extra-6.0.1rc2.src.tar.xz
/test-suite-6.0.1rc2.src.tar.xz
/cfe-6.0.1.src.tar.xz
/clang-tools-extra-6.0.1.src.tar.xz
/test-suite-6.0.1.src.tar.xz
/cfe-7.0.0rc1.src.tar.xz
/test-suite-7.0.0rc1.src.tar.xz
/clang-tools-extra-7.0.0rc1.src.tar.xz
/test-suite-7.0.0rc1.src.fedora.tar.gz
/test-suite-7.0.0rc1.src.fedora.tar.xz
/cfe-7.0.0rc2.src.tar.xz
/clang-tools-extra-7.0.0rc2.src.tar.xz
/test-suite-7.0.0rc2.src.fedora.tar.xz
/cfe-7.0.0rc3.src.tar.xz
/clang-tools-extra-7.0.0rc3.src.tar.xz
/test-suite-7.0.0rc3.src.fedora.tar.xz
/cfe-7.0.0.src.tar.xz
/test-suite-7.0.0.src.fedora.tar.xz
/clang-tools-extra-7.0.0.src.tar.xz
/clang-tools-extra-7.0.1.src.tar.xz
/cfe-7.0.1.src.tar.xz
/clang-tools-extra-8.0.0rc1.src.tar.xz
/cfe-8.0.0rc1.src.tar.xz
/cfe-8.0.0rc2.src.tar.xz
/clang-tools-extra-8.0.0rc2.src.tar.xz
/cfe-8.0.0rc3.src.tar.xz
/clang-tools-extra-8.0.0rc3.src.tar.xz
/cfe-8.0.0rc4.src.tar.xz
/clang-tools-extra-8.0.0rc4.src.tar.xz
/cfe-8.0.0.src.tar.xz
/clang-tools-extra-8.0.0.src.tar.xz
/cfe-9.0.0rc2.src.tar.xz
/clang-tools-extra-9.0.0rc2.src.tar.xz
/cfe-9.0.0rc3.src.tar.xz
/clang-tools-extra-9.0.0rc3.src.tar.xz
/cfe-9.0.0.src.tar.xz
/clang-tools-extra-9.0.0.src.tar.xz
/clang-9.0.1.src.tar.xz
/clang-tools-extra-9.0.1.src.tar.xz
/clang-10.0.0rc1.src.tar.xz
/clang-tools-extra-10.0.0rc1.src.tar.xz
/clang-10.0.0rc1.src.tar.xz.sig
/clang-tools-extra-10.0.0rc1.src.tar.xz.sig
/clang-10.0.0rc2.src.tar.xz
/clang-tools-extra-10.0.0rc2.src.tar.xz
/clang-tools-extra-10.0.0rc2.src.tar.xz.sig
/clang-10.0.0rc2.src.tar.xz.sig
/clang-10.0.0rc3.src.tar.xz
/clang-tools-extra-10.0.0rc3.src.tar.xz
/clang-tools-extra-10.0.0rc3.src.tar.xz.sig
/clang-10.0.0rc3.src.tar.xz.sig
/clang-10.0.0rc4.src.tar.xz
/clang-tools-extra-10.0.0rc4.src.tar.xz
/clang-tools-extra-10.0.0rc4.src.tar.xz.sig
/clang-10.0.0rc4.src.tar.xz.sig
/clang-10.0.0rc5.src.tar.xz
/clang-tools-extra-10.0.0rc5.src.tar.xz
/clang-tools-extra-10.0.0rc5.src.tar.xz.sig
/clang-10.0.0rc5.src.tar.xz.sig
/clang-10.0.0rc6.src.tar.xz
/clang-tools-extra-10.0.0rc6.src.tar.xz
/clang-tools-extra-10.0.0rc6.src.tar.xz.sig
/clang-10.0.0rc6.src.tar.xz.sig
/clang-10.0.0.src.tar.xz.sig
/clang-tools-extra-10.0.0.src.tar.xz.sig
/clang-tools-extra-10.0.0.src.tar.xz
/clang-10.0.0.src.tar.xz
/*.src.rpm
/*.src.tar.xz
/*.src.tar.xz.sig
/cmake/
/results_clang/

View File

@ -0,0 +1,59 @@
From d68a5a7817dc0d43853d8b84c9185dc24338664f Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 6 Oct 2021 05:32:44 +0000
Subject: [PATCH] Driver: Add a gcc equivalent triple to the list of triples to
search
There are some gcc triples, like x86_64-redhat-linux, that provide the
same behavior as a clang triple with a similar name (e.g.
x86_64-redhat-linux-gnu). When searching for a gcc install, also search
for a gcc equivalent triple if one exists.
Differential Revision: https://reviews.llvm.org/D111207
---
clang/lib/Driver/ToolChains/Gnu.cpp | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
index fe5bda5c6605..fd4a7f72be14 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -1884,6 +1884,18 @@ static llvm::StringRef getGCCToolchainDir(const ArgList &Args,
return GCC_INSTALL_PREFIX;
}
+/// This function takes a 'clang' triple and converts it to an equivalent gcc
+/// triple.
+static const char *ConvertToGccTriple(StringRef CandidateTriple) {
+ return llvm::StringSwitch<const char *>(CandidateTriple)
+ .Case("aarch64-redhat-linux-gnu", "aarch64-redhat-linux")
+ .Case("i686-redhat-linux-gnu", "i686-redhat-linux")
+ .Case("ppc64le-redhat-linux-gnu", "ppc64le-redhat-linux")
+ .Case("s390x-redhat-linux-gnu", "s390x-redhat-linux")
+ .Case("x86_64-redhat-linux-gnu", "x86_64-redhat-linux")
+ .Default(NULL);
+}
+
/// Initialize a GCCInstallationDetector from the driver.
///
/// This performs all of the autodetection and sets up the various paths.
@@ -1904,6 +1916,16 @@ void Generic_GCC::GCCInstallationDetector::init(
// The compatible GCC triples for this particular architecture.
SmallVector<StringRef, 16> CandidateTripleAliases;
SmallVector<StringRef, 16> CandidateBiarchTripleAliases;
+
+ // In some cases gcc uses a slightly different triple than clang for the
+ // same target. Convert the clang triple to the gcc equivalent and use that
+ // to search for the gcc install.
+ const char *ConvertedTriple = ConvertToGccTriple(TargetTriple.str());
+ if (ConvertedTriple) {
+ CandidateTripleAliases.push_back(ConvertedTriple);
+ CandidateBiarchTripleAliases.push_back(ConvertedTriple);
+ }
+
CollectLibDirsAndTriples(TargetTriple, BiarchVariantTriple, CandidateLibDirs,
CandidateTripleAliases, CandidateBiarchLibDirs,
CandidateBiarchTripleAliases);
--
2.26.2

View File

@ -1,39 +0,0 @@
From 690373af5a5d50cf115ed6e4d2849bb786f9dc8e Mon Sep 17 00:00:00 2001
From: serge-sans-paille <sguelton@redhat.com>
Date: Tue, 10 Dec 2019 09:18:03 +0000
Subject: [PATCH] Make -funwind-tables the default for all archs
---
clang/lib/Driver/ToolChain.cpp | 2 +-
clang/lib/Driver/ToolChains/Gnu.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index b1fddb0af55..43af40ed0e8 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -244,7 +244,7 @@ std::string ToolChain::getInputFilename(const InputInfo &Input) const {
}
bool ToolChain::IsUnwindTablesDefault(const ArgList &Args) const {
- return false;
+ return true;
}
Tool *ToolChain::getClang() const {
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
index 33cdd3585c2..15e82be8f3a 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -2535,7 +2535,7 @@ void Generic_GCC::printVerboseInfo(raw_ostream &OS) const {
}
bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const {
- return getArch() == llvm::Triple::x86_64;
+ return true;
}
bool Generic_GCC::isPICDefault() const {
--
2.20.1

View File

@ -0,0 +1,27 @@
From 49f827b09db549de62dcaf8b90b3fcb3e08c0ee5 Mon Sep 17 00:00:00 2001
From: Serge Guelton <sguelton@redhat.com>
Date: Mon, 6 Mar 2023 12:37:48 +0100
Subject: [PATCH] Make -funwind-tables the default on all archs
---
clang/lib/Driver/ToolChains/Gnu.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
index 24fbdcffc07b..8fed46b49515 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -2904,6 +2904,10 @@ Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args) const {
case llvm::Triple::riscv64:
case llvm::Triple::x86:
case llvm::Triple::x86_64:
+ // Enable -funwind-tables on all architectures supported by Fedora:
+ // rhbz#1655546
+ case llvm::Triple::systemz:
+ case llvm::Triple::arm:
return UnwindTableLevel::Asynchronous;
default:
return UnwindTableLevel::None;
--
2.39.1

View File

@ -0,0 +1,125 @@
From adbe188f3b1e3a0dd5ec80d9409601ba7f5b0423 Mon Sep 17 00:00:00 2001
From: Konrad Kleine <kkleine@redhat.com>
Date: Thu, 24 Mar 2022 09:44:21 +0100
Subject: [PATCH] Produce DWARF4 by default
Have a look at the following commit to see when the move from DWARF 4 to 5 first happened upstream:
https://github.com/llvm/llvm-project/commit/d3b26dea16108c427b19b5480c9edc76edf8f5b4?diff=unified
---
clang/lib/Driver/ToolChain.cpp | 4 +---
clang/test/CodeGen/dwarf-version.c | 4 ++--
clang/test/Driver/as-options.s | 4 ++--
clang/test/Driver/cl-options.c | 2 +-
clang/test/Driver/clang-g-opts.c | 2 +-
clang/test/Driver/ve-toolchain.c | 2 +-
clang/test/Driver/ve-toolchain.cpp | 2 +-
7 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 8dafc3d481c2..92bf26dc8ec6 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -428,9 +428,7 @@ ToolChain::getDefaultUnwindTableLevel(const ArgList &Args) const {
}
unsigned ToolChain::GetDefaultDwarfVersion() const {
- // TODO: Remove the RISC-V special case when R_RISCV_SET_ULEB128 linker
- // support becomes more widely available.
- return getTriple().isRISCV() ? 4 : 5;
+ return 4;
}
Tool *ToolChain::getClang() const {
diff --git a/clang/test/CodeGen/dwarf-version.c b/clang/test/CodeGen/dwarf-version.c
index d307eb3f101f..e7e93bf6688c 100644
--- a/clang/test/CodeGen/dwarf-version.c
+++ b/clang/test/CodeGen/dwarf-version.c
@@ -2,8 +2,8 @@
// RUN: %clang -target x86_64-linux-gnu -gdwarf-3 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER3
// RUN: %clang -target x86_64-linux-gnu -gdwarf-4 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
// RUN: %clang -target x86_64-linux-gnu -gdwarf-5 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5
-// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5
-// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5
+// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
+// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
// The -isysroot is used as a hack to avoid LIT messing with the SDKROOT
// environment variable which indirecty overrides the version in the target
diff --git a/clang/test/Driver/as-options.s b/clang/test/Driver/as-options.s
index 73d002c7ef7e..71d55f7fd537 100644
--- a/clang/test/Driver/as-options.s
+++ b/clang/test/Driver/as-options.s
@@ -122,7 +122,7 @@
// RUN: FileCheck --check-prefix=DEBUG %s
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -g0 -g %s -### 2>&1 | \
// RUN: FileCheck --check-prefix=DEBUG %s
-// DEBUG: "-g" "-gdwarf-5"
+// DEBUG: "-g" "-gdwarf-4"
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -g -g0 %s -### 2>&1 | \
// RUN: FileCheck --check-prefix=NODEBUG %s
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf-5 -g0 %s -### 2>&1 | \
@@ -141,7 +141,7 @@
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf-2 %s -### 2>&1 | \
// RUN: FileCheck --check-prefix=GDWARF2 %s
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf %s -### 2>&1 | \
-// RUN: FileCheck --check-prefix=GDWARF5 %s
+// RUN: FileCheck --check-prefix=GDWARF4 %s
// RUN: %clang --target=aarch64-linux-gnu -fno-integrated-as -gdwarf-5 %s -### 2>&1 | \
// RUN: FileCheck --check-prefix=GDWARF5 %s
diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c
index 6d929b19e7e2..373905c2e0fc 100644
--- a/clang/test/Driver/cl-options.c
+++ b/clang/test/Driver/cl-options.c
@@ -569,7 +569,7 @@
// RUN: %clang_cl /Z7 -gdwarf /c -### -- %s 2>&1 | FileCheck -check-prefix=Z7_gdwarf %s
// Z7_gdwarf: "-gcodeview"
// Z7_gdwarf: "-debug-info-kind=constructor"
-// Z7_gdwarf: "-dwarf-version=
+// Z7_gdwarf: "-dwarf-version=4
// RUN: %clang_cl /ZH:MD5 /c -### -- %s 2>&1 | FileCheck -check-prefix=ZH_MD5 %s
// ZH_MD5: "-gsrc-hash=md5"
diff --git a/clang/test/Driver/clang-g-opts.c b/clang/test/Driver/clang-g-opts.c
index 5ee0fe64fe48..985158746137 100644
--- a/clang/test/Driver/clang-g-opts.c
+++ b/clang/test/Driver/clang-g-opts.c
@@ -32,7 +32,7 @@
// CHECK-WITHOUT-G-NOT: -debug-info-kind
// CHECK-WITH-G: "-debug-info-kind=constructor"
-// CHECK-WITH-G: "-dwarf-version=5"
+// CHECK-WITH-G: "-dwarf-version=4"
// CHECK-WITH-G-DWARF2: "-dwarf-version=2"
// CHECK-WITH-G-STANDALONE: "-debug-info-kind=standalone"
diff --git a/clang/test/Driver/ve-toolchain.c b/clang/test/Driver/ve-toolchain.c
index 32e25769b6da..b8a2852daba8 100644
--- a/clang/test/Driver/ve-toolchain.c
+++ b/clang/test/Driver/ve-toolchain.c
@@ -6,7 +6,7 @@
/// Checking dwarf-version
// RUN: %clang -### -g --target=ve %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s
-// DWARF_VER: "-dwarf-version=5"
+// DWARF_VER: "-dwarf-version=4"
///-----------------------------------------------------------------------------
/// Checking include-path
diff --git a/clang/test/Driver/ve-toolchain.cpp b/clang/test/Driver/ve-toolchain.cpp
index 5a33d5eceb61..cedf895b36dc 100644
--- a/clang/test/Driver/ve-toolchain.cpp
+++ b/clang/test/Driver/ve-toolchain.cpp
@@ -7,7 +7,7 @@
// RUN: %clangxx -### -g --target=ve-unknown-linux-gnu \
// RUN: %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s
-// DWARF_VER: "-dwarf-version=5"
+// DWARF_VER: "-dwarf-version=4"
///-----------------------------------------------------------------------------
/// Checking include-path
--
2.41.0

View File

@ -1,50 +0,0 @@
From 09ae3ef5710a89505318ec721c65b6c838147276 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Thu, 7 Feb 2019 21:05:37 -0800
Subject: [PATCH] ToolChain: Add -lgcc_s to the linker flags when using libc++
The libc++ build for Fedora does not include an implementation of
libunwind, so we need to explicitly link against something that
provides this implementation.
---
clang/lib/Driver/ToolChain.cpp | 1 +
clang/test/Driver/netbsd.cpp | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp
index 88a627e..cb99844 100644
--- a/lib/Driver/ToolChain.cpp
+++ b/lib/Driver/ToolChain.cpp
@@ -767,6 +767,7 @@ void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args,
switch (Type) {
case ToolChain::CST_Libcxx:
CmdArgs.push_back("-lc++");
+ CmdArgs.push_back("-lgcc_s");
break;
case ToolChain::CST_Libstdcxx:
diff --git a/test/Driver/netbsd.cpp b/test/Driver/netbsd.cpp
index 4af7d83..ff18c62 100644
--- a/test/Driver/netbsd.cpp
+++ b/test/Driver/netbsd.cpp
@@ -131,7 +131,7 @@
// ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e-unknown-netbsd7.0.0-eabi"
// ARM-7: ld{{.*}}" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld.elf_so"
// ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}eabi{{/|\\\\}}crti.o"
-// ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lm" "-lc"
+// ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lgcc_s" "-lm" "-lc"
// ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o"
// AARCH64: clang{{.*}}" "-cc1" "-triple" "aarch64-unknown-netbsd"
@@ -250,7 +250,7 @@
// S-ARM-7: clang{{.*}}" "-cc1" "-triple" "armv5e-unknown-netbsd7.0.0-eabi"
// S-ARM-7: ld{{.*}}" "--eh-frame-hdr" "-Bstatic"
// S-ARM-7: "-o" "a.out" "{{.*}}/usr/lib{{/|\\\\}}crt0.o" "{{.*}}/usr/lib{{/|\\\\}}eabi{{/|\\\\}}crti.o"
-// S-ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lm" "-lc"
+// S-ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtbegin.o" "{{.*}}.o" "-lc++" "-lgcc_s" "-lm" "-lc"
// S-ARM-7: "{{.*}}/usr/lib{{/|\\\\}}crtend.o" "{{.*}}/usr/lib{{/|\\\\}}crtn.o"
// S-AARCH64: clang{{.*}}" "-cc1" "-triple" "aarch64-unknown-netbsd"
--
1.8.3.1

View File

@ -0,0 +1,30 @@
From a2449cee8c995b56f1892502aab3dfad3d6f3ca1 Mon Sep 17 00:00:00 2001
From: Tulio Magno Quites Machado Filho <tuliom@redhat.com>
Date: Fri, 8 Sep 2023 11:45:34 -0300
Subject: [PATCH] Workaround a bug in ORC on ppc64le
The Jit code appears to be returning the wrong printf symbol on ppc64le
after the transition of the default long double to IEEE 128-bit floating
point.
---
clang/unittests/Interpreter/InterpreterTest.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp
index abb8e6377aab..7b6697ebc6ed 100644
--- a/clang/unittests/Interpreter/InterpreterTest.cpp
+++ b/clang/unittests/Interpreter/InterpreterTest.cpp
@@ -243,7 +243,9 @@ TEST(IncrementalProcessing, FindMangledNameSymbol) {
EXPECT_FALSE(!Addr);
// FIXME: Re-enable when we investigate the way we handle dllimports on Win.
-#ifndef _WIN32
+ // FIXME: The printf symbol returned from the Jit may not be correct on
+ // ppc64le when the default long double is IEEE 128-bit fp.
+#if !defined _WIN32 && !(defined __PPC64__ && defined __LITTLE_ENDIAN__)
EXPECT_EQ((uintptr_t)&printf, Addr->getValue());
#endif // _WIN32
}
--
2.41.0

View File

@ -1,25 +0,0 @@
From 856b789b9de0895786ba23681c4337172676e01e Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Fri, 31 Jan 2020 11:04:57 -0800
Subject: [PATCH] clang: Don't install static libraries
---
clang/cmake/modules/AddClang.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake
index cbd618e..9cf076a 100644
--- a/clang/cmake/modules/AddClang.cmake
+++ b/clang/cmake/modules/AddClang.cmake
@@ -97,7 +97,7 @@ macro(add_clang_library name)
if(TARGET ${name})
target_link_libraries(${name} INTERFACE ${LLVM_COMMON_LIBS})
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN)
+ if (ARG_SHARED AND (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN))
set(export_to_clangtargets)
if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
"clang-libraries" IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
--
1.8.3.1

View File

@ -0,0 +1,85 @@
From 22d62b32cd3be5fb0ae10723b35a781e0f862b71 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Tue, 24 Jan 2023 22:46:25 +0000
Subject: [PATCH] clang-tools-extra: Make test dependency on LLVMHello optional
This fixes clang + clang-tools-extra standalone build after
36892727e4f19a60778e371d78f8fb09d8122c85.
---
clang-tools-extra/test/CMakeLists.txt | 10 +++++++++-
clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp | 2 +-
clang-tools-extra/test/lit.cfg.py | 3 +++
clang-tools-extra/test/lit.site.cfg.py.in | 1 +
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/clang-tools-extra/test/CMakeLists.txt b/clang-tools-extra/test/CMakeLists.txt
index f4c529ee8af2..1cfb4dd529aa 100644
--- a/clang-tools-extra/test/CMakeLists.txt
+++ b/clang-tools-extra/test/CMakeLists.txt
@@ -7,10 +7,15 @@
set(CLANG_TOOLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
set(CLANG_TOOLS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..")
+if (TARGET LLVMHello)
+ set (LLVM_HAS_LLVM_HELLO 1)
+endif()
+
llvm_canonicalize_cmake_booleans(
CLANG_TIDY_ENABLE_STATIC_ANALYZER
CLANG_PLUGIN_SUPPORT
LLVM_INSTALL_TOOLCHAIN_ONLY
+ LLVM_HAS_LLVM_HELLO
)
configure_lit_site_cfg(
@@ -86,7 +91,10 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
endif()
if(TARGET CTTestTidyModule)
- list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule LLVMHello)
+ list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule)
+ if (TARGET LLVMHello)
+ list(APPEND CLANG_TOOLS_TEST_DEPS CTTestTidyModule)
+ endif()
target_include_directories(CTTestTidyModule PUBLIC BEFORE "${CLANG_TOOLS_SOURCE_DIR}")
if(CLANG_PLUGIN_SUPPORT AND (WIN32 OR CYGWIN))
set(LLVM_LINK_COMPONENTS
diff --git a/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp b/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp
index c66a94f458cf..b4e7a5d691e5 100644
--- a/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp
+++ b/clang-tools-extra/test/clang-tidy/CTTestTidyModule.cpp
@@ -1,4 +1,4 @@
-// REQUIRES: plugins
+// REQUIRES: plugins, llvm-hello
// RUN: clang-tidy -checks='-*,mytest*' --list-checks -load %llvmshlibdir/CTTestTidyModule%pluginext -load %llvmshlibdir/LLVMHello%pluginext | FileCheck --check-prefix=CHECK-LIST %s
// CHECK-LIST: Enabled checks:
// CHECK-LIST-NEXT: mytest1
diff --git a/clang-tools-extra/test/lit.cfg.py b/clang-tools-extra/test/lit.cfg.py
index 9f64fd3d2ffa..1b258a00ddf9 100644
--- a/clang-tools-extra/test/lit.cfg.py
+++ b/clang-tools-extra/test/lit.cfg.py
@@ -75,6 +75,9 @@ config.substitutions.append(("%clang_tidy_headers", clang_tidy_headers))
if config.has_plugins and config.llvm_plugin_ext:
config.available_features.add("plugins")
+if config.has_llvm_hello:
+ config.available_features.add("llvm-hello")
+
# It is not realistically possible to account for all options that could
# possibly be present in system and user configuration files, so disable
# default configs for the test runs.
diff --git a/clang-tools-extra/test/lit.site.cfg.py.in b/clang-tools-extra/test/lit.site.cfg.py.in
index 4eb830a1baf1..6e5559348454 100644
--- a/clang-tools-extra/test/lit.site.cfg.py.in
+++ b/clang-tools-extra/test/lit.site.cfg.py.in
@@ -11,6 +11,7 @@ config.target_triple = "@LLVM_TARGET_TRIPLE@"
config.host_triple = "@LLVM_HOST_TRIPLE@"
config.clang_tidy_staticanalyzer = @CLANG_TIDY_ENABLE_STATIC_ANALYZER@
config.has_plugins = @CLANG_PLUGIN_SUPPORT@ & ~@LLVM_INSTALL_TOOLCHAIN_ONLY@
+config.has_llvm_hello = @LLVM_HAS_LLVM_HELLO@
# Support substitution of the tools and libs dirs with user parameters. This is
# used when we can't determine the tool dir at configuration time.
config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
--
2.40.1

View File

@ -1,99 +0,0 @@
From 11857d49948b845dcfd7c7f78595095e3add012d Mon Sep 17 00:00:00 2001
From: Rong Xu <xur@google.com>
Date: Tue, 25 Feb 2020 08:04:01 -0800
Subject: [PATCH] [remark][diagnostics] [codegen] Fix PR44896
This patch fixes PR44896. For IR input files, option fdiscard-value-names
should be ignored as we need named values in loadModule().
Commit 60d3947922 sets this option after loadModule() where valued names
already created. This creates an inconsistent state in setNameImpl()
that leads to a seg fault.
This patch forces fdiscard-value-names to be false for IR input files.
This patch also emits a warning of "ignoring -fdiscard-value-names" if
option fdiscard-value-names is explictly enabled in the commandline for
IR input files.
Differential Revision: https://reviews.llvm.org/D74878
---
clang/include/clang/Basic/DiagnosticDriverKinds.td | 3 +++
clang/lib/CodeGen/CodeGenAction.cpp | 3 +++
clang/lib/Driver/ToolChains/Clang.cpp | 10 +++++++++-
clang/test/CodeGen/PR44896.ll | 15 +++++++++++++++
4 files changed, 30 insertions(+), 1 deletion(-)
create mode 100644 clang/test/CodeGen/PR44896.ll
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index ecd871e..48ece91 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -271,6 +271,9 @@ def warn_drv_unsupported_debug_info_opt_for_target : Warning<
InGroup<UnsupportedTargetOpt>;
def warn_c_kext : Warning<
"ignoring -fapple-kext which is valid for C++ and Objective-C++ only">;
+def warn_ignoring_fdiscard_for_bitcode : Warning<
+ "ignoring -fdiscard-value-names for LLVM Bitcode">,
+ InGroup<UnusedCommandLineArgument>;
def warn_drv_input_file_unused : Warning<
"%0: '%1' input unused%select{ when '%3' is present|}2">,
InGroup<UnusedCommandLineArgument>;
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp
index 5ebc34c..81946b1 100644
--- a/clang/lib/CodeGen/CodeGenAction.cpp
+++ b/clang/lib/CodeGen/CodeGenAction.cpp
@@ -1146,6 +1146,9 @@ void CodeGenAction::ExecuteAction() {
CI.getTargetOpts(), CI.getLangOpts(),
CI.getFrontendOpts().ShowTimers,
std::move(LinkModules), *VMContext, nullptr);
+ // PR44896: Force DiscardValueNames as false. DiscardValueNames cannot be
+ // true here because the valued names are needed for reading textual IR.
+ Ctx.setDiscardValueNames(false);
Ctx.setDiagnosticHandler(
std::make_unique<ClangDiagnosticHandler>(CodeGenOpts, &Result));
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 19a23c9..d387a1d 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -4332,8 +4332,16 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// Discard value names in assert builds unless otherwise specified.
if (Args.hasFlag(options::OPT_fdiscard_value_names,
- options::OPT_fno_discard_value_names, !IsAssertBuild))
+ options::OPT_fno_discard_value_names, !IsAssertBuild)) {
+ if (Args.hasArg(options::OPT_fdiscard_value_names) &&
+ (std::any_of(Inputs.begin(), Inputs.end(),
+ [](const clang::driver::InputInfo &II) {
+ return types::isLLVMIR(II.getType());
+ }))) {
+ D.Diag(diag::warn_ignoring_fdiscard_for_bitcode);
+ }
CmdArgs.push_back("-discard-value-names");
+ }
// Set the main file name, so that debug info works even with
// -save-temps.
diff --git a/clang/test/CodeGen/PR44896.ll b/clang/test/CodeGen/PR44896.ll
new file mode 100644
index 0000000..a4d3445
--- /dev/null
+++ b/clang/test/CodeGen/PR44896.ll
@@ -0,0 +1,15 @@
+; RUN: %clang -fdiscard-value-names -S %s -o /dev/null 2>&1 | FileCheck --check-prefix=WARNING %s
+; RUN: %clang -S %s -o /dev/null 2>&1 | FileCheck --check-prefix=NOWARNING %s
+; RUN: %clang_cc1 -S -emit-llvm %s -discard-value-names -o /dev/null
+; PR 44896
+
+; WARNING: ignoring -fdiscard-value-names for LLVM Bitcode
+; NOWARNING-NOT: ignoring -fdiscard-value-names for LLVM Bitcode
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64--linux-gnu"
+
+define linkonce i8* @b(i8* %a) {
+ ret i8* %a
+}
+
--
1.8.3.1

View File

@ -1,42 +0,0 @@
From 1f26a0284925859b72ee520ce74452d77d822409 Mon Sep 17 00:00:00 2001
From: serge-sans-paille <sguelton@redhat.com>
Date: Mon, 28 Jan 2019 19:12:27 +0000
Subject: [PATCH 2/2] [PATCH] gtest reorg
---
CMakeLists.txt | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2016a45ca..48ea3c3bb9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -157,12 +157,6 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.")
set(LLVM_UTILS_PROVIDED ON)
set(CLANG_TEST_DEPS FileCheck count not)
endif()
- set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest)
- if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h
- AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
- AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt)
- add_subdirectory(${UNITTEST_DIR} utils/unittest)
- endif()
else()
# Seek installed Lit.
find_program(LLVM_LIT
@@ -507,7 +501,11 @@ endif()
if( CLANG_INCLUDE_TESTS )
- if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include/gtest/gtest.h)
+ set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest)
+ if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h
+ AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
+ AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt)
+ add_subdirectory(${UNITTEST_DIR} utils/unittest)
add_subdirectory(unittests)
list(APPEND CLANG_TEST_DEPS ClangUnitTests)
list(APPEND CLANG_TEST_PARAMS
--
2.19.2

View File

@ -0,0 +1,25 @@
From 88704fc2eabb9dd19a9c3eb81a9b3dc37d95651c Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Fri, 31 Jan 2020 11:04:57 -0800
Subject: [PATCH][clang] Don't install static libraries
---
clang/cmake/modules/AddClang.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake
index 5752f4277444..0f52822d91f0 100644
--- a/clang/cmake/modules/AddClang.cmake
+++ b/clang/cmake/modules/AddClang.cmake
@@ -113,7 +113,7 @@ macro(add_clang_library name)
if(TARGET ${lib})
target_link_libraries(${lib} INTERFACE ${LLVM_COMMON_LIBS})
- if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN)
+ if (ARG_SHARED AND (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN))
get_target_export_arg(${name} Clang export_to_clangtargets UMBRELLA clang-libraries)
install(TARGETS ${lib}
COMPONENT ${lib}
--
2.30.2

View File

@ -0,0 +1,26 @@
diff -Naur a/clang/docs/conf.py b/clang/docs/conf.py
--- a/clang/docs/conf.py 2020-09-15 09:12:24.318287611 +0000
+++ b/clang/docs/conf.py 2020-09-15 15:01:00.025893199 +0000
@@ -37,21 +37,7 @@
".rst": "restructuredtext",
}
-try:
- import recommonmark
-except ImportError:
- # manpages do not use any .md sources
- if not tags.has("builder-man"):
- raise
-else:
- import sphinx
-
- if sphinx.version_info >= (3, 0):
- # This requires 0.5 or later.
- extensions.append("recommonmark")
- else:
- source_parsers = {".md": "recommonmark.parser.CommonMarkParser"}
- source_suffix[".md"] = "markdown"
+import sphinx
# The encoding of source files.
# source_encoding = 'utf-8-sig'

298
cfg.patch Normal file
View File

@ -0,0 +1,298 @@
commit ad4a5130277776d8f15f40ac5a6dede6ad3aabfb
Author: Timm Bäder <tbaeder@redhat.com>
Date: Tue Aug 8 14:11:33 2023 +0200
[clang][CFG] Cleanup functions
Add declarations declared with attribute(cleanup(...)) to the CFG,
similar to destructors.
Differential Revision: https://reviews.llvm.org/D157385
diff --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h
index cf4fa2da2a35..67383bb316d3 100644
--- a/clang/include/clang/Analysis/CFG.h
+++ b/clang/include/clang/Analysis/CFG.h
@@ -14,10 +14,11 @@
#ifndef LLVM_CLANG_ANALYSIS_CFG_H
#define LLVM_CLANG_ANALYSIS_CFG_H
-#include "clang/Analysis/Support/BumpVector.h"
-#include "clang/Analysis/ConstructionContext.h"
+#include "clang/AST/Attr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
+#include "clang/Analysis/ConstructionContext.h"
+#include "clang/Analysis/Support/BumpVector.h"
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/GraphTraits.h"
@@ -74,7 +75,8 @@ public:
MemberDtor,
TemporaryDtor,
DTOR_BEGIN = AutomaticObjectDtor,
- DTOR_END = TemporaryDtor
+ DTOR_END = TemporaryDtor,
+ CleanupFunction,
};
protected:
@@ -383,6 +385,32 @@ private:
}
};
+class CFGCleanupFunction final : public CFGElement {
+public:
+ CFGCleanupFunction() = default;
+ CFGCleanupFunction(const VarDecl *VD)
+ : CFGElement(Kind::CleanupFunction, VD) {
+ assert(VD->hasAttr<CleanupAttr>());
+ }
+
+ const VarDecl *getVarDecl() const {
+ return static_cast<VarDecl *>(Data1.getPointer());
+ }
+
+ /// Returns the function to be called when cleaning up the var decl.
+ const FunctionDecl *getFunctionDecl() const {
+ const CleanupAttr *A = getVarDecl()->getAttr<CleanupAttr>();
+ return A->getFunctionDecl();
+ }
+
+private:
+ friend class CFGElement;
+
+ static bool isKind(const CFGElement E) {
+ return E.getKind() == Kind::CleanupFunction;
+ }
+};
+
/// Represents C++ object destructor implicitly generated for automatic object
/// or temporary bound to const reference at the point of leaving its local
/// scope.
@@ -1142,6 +1170,10 @@ public:
Elements.push_back(CFGAutomaticObjDtor(VD, S), C);
}
+ void appendCleanupFunction(const VarDecl *VD, BumpVectorContext &C) {
+ Elements.push_back(CFGCleanupFunction(VD), C);
+ }
+
void appendLifetimeEnds(VarDecl *VD, Stmt *S, BumpVectorContext &C) {
Elements.push_back(CFGLifetimeEnds(VD, S), C);
}
diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp
index b82f9010a83f..03ab4c6fdf29 100644
--- a/clang/lib/Analysis/CFG.cpp
+++ b/clang/lib/Analysis/CFG.cpp
@@ -881,6 +881,10 @@ private:
B->appendAutomaticObjDtor(VD, S, cfg->getBumpVectorContext());
}
+ void appendCleanupFunction(CFGBlock *B, VarDecl *VD) {
+ B->appendCleanupFunction(VD, cfg->getBumpVectorContext());
+ }
+
void appendLifetimeEnds(CFGBlock *B, VarDecl *VD, Stmt *S) {
B->appendLifetimeEnds(VD, S, cfg->getBumpVectorContext());
}
@@ -1346,7 +1350,8 @@ private:
return {};
}
- bool hasTrivialDestructor(VarDecl *VD);
+ bool hasTrivialDestructor(const VarDecl *VD) const;
+ bool needsAutomaticDestruction(const VarDecl *VD) const;
};
} // namespace
@@ -1861,14 +1866,14 @@ void CFGBuilder::addAutomaticObjDestruction(LocalScope::const_iterator B,
if (B == E)
return;
- SmallVector<VarDecl *, 10> DeclsNonTrivial;
- DeclsNonTrivial.reserve(B.distance(E));
+ SmallVector<VarDecl *, 10> DeclsNeedDestruction;
+ DeclsNeedDestruction.reserve(B.distance(E));
for (VarDecl* D : llvm::make_range(B, E))
- if (!hasTrivialDestructor(D))
- DeclsNonTrivial.push_back(D);
+ if (needsAutomaticDestruction(D))
+ DeclsNeedDestruction.push_back(D);
- for (VarDecl *VD : llvm::reverse(DeclsNonTrivial)) {
+ for (VarDecl *VD : llvm::reverse(DeclsNeedDestruction)) {
if (BuildOpts.AddImplicitDtors) {
// If this destructor is marked as a no-return destructor, we need to
// create a new block for the destructor which does not have as a
@@ -1879,7 +1884,8 @@ void CFGBuilder::addAutomaticObjDestruction(LocalScope::const_iterator B,
Ty = getReferenceInitTemporaryType(VD->getInit());
Ty = Context->getBaseElementType(Ty);
- if (Ty->getAsCXXRecordDecl()->isAnyDestructorNoReturn())
+ const CXXRecordDecl *CRD = Ty->getAsCXXRecordDecl();
+ if (CRD && CRD->isAnyDestructorNoReturn())
Block = createNoReturnBlock();
}
@@ -1890,8 +1896,10 @@ void CFGBuilder::addAutomaticObjDestruction(LocalScope::const_iterator B,
// objects, we end lifetime with scope end.
if (BuildOpts.AddLifetime)
appendLifetimeEnds(Block, VD, S);
- if (BuildOpts.AddImplicitDtors)
+ if (BuildOpts.AddImplicitDtors && !hasTrivialDestructor(VD))
appendAutomaticObjDtor(Block, VD, S);
+ if (VD->hasAttr<CleanupAttr>())
+ appendCleanupFunction(Block, VD);
}
}
@@ -1922,7 +1930,7 @@ void CFGBuilder::addScopeExitHandling(LocalScope::const_iterator B,
// is destroyed, for automatic variables, this happens when the end of the
// scope is added.
for (VarDecl* D : llvm::make_range(B, E))
- if (hasTrivialDestructor(D))
+ if (!needsAutomaticDestruction(D))
DeclsTrivial.push_back(D);
if (DeclsTrivial.empty())
@@ -2095,7 +2103,11 @@ LocalScope* CFGBuilder::addLocalScopeForDeclStmt(DeclStmt *DS,
return Scope;
}
-bool CFGBuilder::hasTrivialDestructor(VarDecl *VD) {
+bool CFGBuilder::needsAutomaticDestruction(const VarDecl *VD) const {
+ return !hasTrivialDestructor(VD) || VD->hasAttr<CleanupAttr>();
+}
+
+bool CFGBuilder::hasTrivialDestructor(const VarDecl *VD) const {
// Check for const references bound to temporary. Set type to pointee.
QualType QT = VD->getType();
if (QT->isReferenceType()) {
@@ -2149,7 +2161,7 @@ LocalScope* CFGBuilder::addLocalScopeForVarDecl(VarDecl *VD,
return Scope;
if (!BuildOpts.AddLifetime && !BuildOpts.AddScopes &&
- hasTrivialDestructor(VD)) {
+ !needsAutomaticDestruction(VD)) {
assert(BuildOpts.AddImplicitDtors);
return Scope;
}
@@ -5287,6 +5299,7 @@ CFGImplicitDtor::getDestructorDecl(ASTContext &astContext) const {
case CFGElement::CXXRecordTypedCall:
case CFGElement::ScopeBegin:
case CFGElement::ScopeEnd:
+ case CFGElement::CleanupFunction:
llvm_unreachable("getDestructorDecl should only be used with "
"ImplicitDtors");
case CFGElement::AutomaticObjectDtor: {
@@ -5830,6 +5843,11 @@ static void print_elem(raw_ostream &OS, StmtPrinterHelper &Helper,
break;
}
+ case CFGElement::Kind::CleanupFunction:
+ OS << "CleanupFunction ("
+ << E.castAs<CFGCleanupFunction>().getFunctionDecl()->getName() << ")\n";
+ break;
+
case CFGElement::Kind::LifetimeEnds:
Helper.handleDecl(E.castAs<CFGLifetimeEnds>().getVarDecl(), OS);
OS << " (Lifetime ends)\n";
diff --git a/clang/lib/Analysis/PathDiagnostic.cpp b/clang/lib/Analysis/PathDiagnostic.cpp
index 348afc42319e..0cb03943c547 100644
--- a/clang/lib/Analysis/PathDiagnostic.cpp
+++ b/clang/lib/Analysis/PathDiagnostic.cpp
@@ -567,6 +567,7 @@ getLocationForCaller(const StackFrameContext *SFC,
}
case CFGElement::ScopeBegin:
case CFGElement::ScopeEnd:
+ case CFGElement::CleanupFunction:
llvm_unreachable("not yet implemented!");
case CFGElement::LifetimeEnds:
case CFGElement::LoopExit:
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
index 0e2ac78f7089..d7c5bd1d4042 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
@@ -993,6 +993,7 @@ void ExprEngine::processCFGElement(const CFGElement E, ExplodedNode *Pred,
ProcessLoopExit(E.castAs<CFGLoopExit>().getLoopStmt(), Pred);
return;
case CFGElement::LifetimeEnds:
+ case CFGElement::CleanupFunction:
case CFGElement::ScopeBegin:
case CFGElement::ScopeEnd:
return;
diff --git a/clang/test/Analysis/scopes-cfg-output.cpp b/clang/test/Analysis/scopes-cfg-output.cpp
index 6877d124e67a..4eb8967e3735 100644
--- a/clang/test/Analysis/scopes-cfg-output.cpp
+++ b/clang/test/Analysis/scopes-cfg-output.cpp
@@ -1419,3 +1419,68 @@ label:
}
}
}
+
+// CHECK: [B1]
+// CHECK-NEXT: 1: CFGScopeBegin(i)
+// CHECK-NEXT: 2: int i __attribute__((cleanup(cleanup_int)));
+// CHECK-NEXT: 3: CleanupFunction (cleanup_int)
+// CHECK-NEXT: 4: CFGScopeEnd(i)
+void cleanup_int(int *i);
+void test_cleanup_functions() {
+ int i __attribute__((cleanup(cleanup_int)));
+}
+
+// CHECK: [B1]
+// CHECK-NEXT: 1: 10
+// CHECK-NEXT: 2: i
+// CHECK-NEXT: 3: [B1.2] = [B1.1]
+// CHECK-NEXT: 4: return;
+// CHECK-NEXT: 5: CleanupFunction (cleanup_int)
+// CHECK-NEXT: 6: CFGScopeEnd(i)
+// CHECK-NEXT: Preds (1): B3
+// CHECK-NEXT: Succs (1): B0
+// CHECK: [B2]
+// CHECK-NEXT: 1: return;
+// CHECK-NEXT: 2: CleanupFunction (cleanup_int)
+// CHECK-NEXT: 3: CFGScopeEnd(i)
+// CHECK-NEXT: Preds (1): B3
+// CHECK-NEXT: Succs (1): B0
+// CHECK: [B3]
+// CHECK-NEXT: 1: CFGScopeBegin(i)
+// CHECK-NEXT: 2: int i __attribute__((cleanup(cleanup_int)));
+// CHECK-NEXT: 3: m
+// CHECK-NEXT: 4: [B3.3] (ImplicitCastExpr, LValueToRValue, int)
+// CHECK-NEXT: 5: 1
+// CHECK-NEXT: 6: [B3.4] == [B3.5]
+// CHECK-NEXT: T: if [B3.6]
+// CHECK-NEXT: Preds (1): B4
+// CHECK-NEXT: Succs (2): B2 B1
+void test_cleanup_functions2(int m) {
+ int i __attribute__((cleanup(cleanup_int)));
+
+ if (m == 1) {
+ return;
+ }
+
+ i = 10;
+ return;
+}
+
+// CHECK: [B1]
+// CHECK-NEXT: 1: CFGScopeBegin(f)
+// CHECK-NEXT: 2: (CXXConstructExpr, [B1.3], F)
+// CHECK-NEXT: 3: F f __attribute__((cleanup(cleanup_F)));
+// CHECK-NEXT: 4: CleanupFunction (cleanup_F)
+// CHECK-NEXT: 5: [B1.3].~F() (Implicit destructor)
+// CHECK-NEXT: 6: CFGScopeEnd(f)
+// CHECK-NEXT: Preds (1): B2
+// CHECK-NEXT: Succs (1): B0
+class F {
+public:
+ ~F();
+};
+void cleanup_F(F *f);
+
+void test() {
+ F f __attribute((cleanup(cleanup_F)));
+}

View File

@ -0,0 +1,23 @@
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
index 4325cbb4..86ae0f21 100644
--- a/clang/lib/Driver/ToolChains/Gnu.cpp
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp
@@ -2065,6 +2065,7 @@ static llvm::StringRef getGCCToolchainDir(const ArgList &Args,
/// triple.
static const char *ConvertToGccTriple(StringRef CandidateTriple) {
return llvm::StringSwitch<const char *>(CandidateTriple)
+ .Case("riscv64-redhat-linux-gnu", "riscv64-redhat-linux")
.Case("aarch64-redhat-linux-gnu", "aarch64-redhat-linux")
.Case("i686-redhat-linux-gnu", "i686-redhat-linux")
.Case("ppc64le-redhat-linux-gnu", "ppc64le-redhat-linux")
@@ -2426,7 +2427,9 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"};
static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu",
"riscv64-linux-gnu",
- "riscv64-unknown-elf"};
+ "riscv64-unknown-elf",
+ "riscv64-redhat-linux-gnu",
+ "riscv64-redhat-linux"};
static const char *const SPARCv8LibDirs[] = {"/lib32", "/lib"};
static const char *const SPARCv8Triples[] = {"sparc-linux-gnu",

6
clang.rpmlintrc Normal file
View File

@ -0,0 +1,6 @@
# clang needs libstdc++-devel installed in order to compile c++ programs.
addFilter("E: devel-dependency libstdc\+\+-devel")
addFilter("E: explicit-lib-dependency libstdc\+\+-devel")
# clang installs libear to /usr/lib on all arches, so we have to use
# a hard-coded /usr/lib path in order to move it to the python3 sitelib.
addFilter("E: hardcoded-library-path in %{_prefix}/lib/{libear")

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,10 @@ product_versions:
- fedora-*
decision_context: bodhi_update_push_testing
rules:
- !PassingTestCaseRule {test_case_name: org.centos.prod.ci.pipeline.allpackages-build.package.test.functional.complete}
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
rules:
- !PassingTestCaseRule {test_case_name: org.centos.prod.ci.pipeline.allpackages-build.package.test.functional.complete}
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}

View File

@ -1,52 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
67H2IH//2sf8dw==
=ADVe
-----END PGP PUBLIC KEY BLOCK-----

11
macros.clang Normal file
View File

@ -0,0 +1,11 @@
%clang_major_version @@CLANG_MAJOR_VERSION@@
%clang_minor_version @@CLANG_MINOR_VERSION@@
%clang_patch_version @@CLANG_PATCH_VERSION@@
%clang_version %{clang_major_version}.%{clang_minor_version}.%{clang_patch_version}
# This is the path to the clang resource directory that has clang's internal
# headers and libraries. This path should be used by packages that need to
# install files into this directory. This macro's value changes every time
# clang's version changes.
%clang_resource_dir %{_prefix}/lib/clang/%{clang_major_version}

104
release-keys.asc Normal file
View File

@ -0,0 +1,104 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
9RmlwZlOTFGcWBYl/cfRONn9qi9a6w==
=Lvw+
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=tMzl
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -1,4 +1,4 @@
SHA512 (clang-10.0.0.src.tar.xz.sig) = cb46d9c616de9ba6e11602269f93a003fc24951b75844d2d62ad7c435bd9ace0357bf396141b9a3e97034f617ad8f301a1a5556a3feb94b17647f8b76c0b6236
SHA512 (clang-tools-extra-10.0.0.src.tar.xz.sig) = f0527b315ce9f2c86a19dabd462d0d466ac0843262f06d5f2b69333f77457ec9cb99f8ce9fdaa00048dfaec3de5613fb884c4259acd4a75463ba3c6714e35423
SHA512 (clang-tools-extra-10.0.0.src.tar.xz) = 33b6019e64e9ac94bd7c000b77a4a927602a2705baa9b370e392a56b53fe09c8dad1ff7d583892729e9eb291440433ad7d71df768a96d927e4dbc1988fc01d99
SHA512 (clang-10.0.0.src.tar.xz) = b1cccc13c46abcda3d689f51d486fa613ecec40c581c72d8b15951715100a2b8fb24370161601e6716cdba5a784337439e99ec2f0766f988e9cce92de6d775da
SHA512 (clang-17.0.6.src.tar.xz) = da6f670a52d60c46bbe6bfa2870106f6a6714c9566fab293b8c624a555308104a1a05cd065643091d7006ef4533a9a722dff1fccaf26f348a0c0a5c7b9331439
SHA512 (clang-tools-extra-17.0.6.src.tar.xz) = 5110dd36ee1c966d22760000f0c28cf070fd00b05445d418d264dbd3b48426a203f934e402d408fab2602dbf39a29d66898cc7c69c1a52b5e0e6e7097f9db877
SHA512 (clang-tools-extra-17.0.6.src.tar.xz.sig) = 17ed3072a402ffa9f723e5ae5257a68ea6f9c874bec50d91c88159d38d8c121d23974ff3983f6f0d3308b5ec07086ba5c2d4cabfe6cbefeb6613fc30b577f966
SHA512 (clang-17.0.6.src.tar.xz.sig) = 091dca426d275f5a71836f2230e0f12f212527259cc4a941638104b8fcf42b4a122f9c140d07f8c663d38242d10ca5390de1f89d9d7bc0171b66c77a9aebbb3f

6
tests/README.md Normal file
View File

@ -0,0 +1,6 @@
# Gating testplans for Clang
The tests for clang are in a separate repo: https://src.fedoraproject.org/tests/clang
This directory should contain only fmf plans (such as build-gating.fmf) which import
the tests from the tests repo. This can be done using the "url" parameter of the
plan's "discover" step. Reference: https://tmt.readthedocs.io/en/stable/spec/plans.html#fmf

70
tests/build-gating.fmf Normal file
View File

@ -0,0 +1,70 @@
#
# Build/PR gating tests for *LLVM 13*
#
# Compatible with various LLVM 13 distributions:
#
# * Fedora (ursine packages)
# * Centos 9 stream (ursine packages)
# * RHEL-9 (ursine packages)
# * RHEL-8 (Red Hat module)
# * RHEL-7 (software collection)
#
summary: Clang tests for build/PR gating
adjust:
- because: "Plan to be ran when either executed locally, or executed by CI system to gate a build or PR."
when: >-
trigger is defined
and trigger != commit
and trigger != build
enabled: false
- because: "When testing SCL-ized LLVM, the collection must be enabled first"
environment+:
WITH_SCL: "scl enable llvm-toolset-13.0"
when: "collection == llvm-toolset-13.0"
- because: "When testing SCL-ized LLVM, the collection must be enabled first"
environment+:
WITH_SCL: "scl enable llvm-toolset-14.0"
when: "collection == llvm-toolset-14.0"
# Unfortunately, TMT does not support more declarative approach, we need to run commands on our own.
- because: "On RHEL, CRB must be enabled to provide rarer packages"
prepare+:
- name: Enable CRB
how: shell
script: dnf config-manager --set-enabled rhel-CRB
when: >-
distro == rhel-9
or distro == rhel-8
# Unfortunately, TMT does not support more declarative approach, we need to run commands on our own.
- because: "On CentOS, CRB must be enabled to provide rarer packages"
prepare+:
- name: Enable CRB
how: shell
script: dnf config-manager --set-enabled crb
when: >-
distro == centos
discover:
- name: clang-tests
how: fmf
url: https://src.fedoraproject.org/tests/clang.git
ref: main
filter: "tag:-not-in-default"
- name: upstream-llvm-integration-testsuite
how: fmf
url: https://src.fedoraproject.org/tests/llvm.git
ref: main
test: integration-test-suite
- name: redhat-rpm-config
how: fmf
url: https://src.fedoraproject.org/rpms/redhat-rpm-config.git
ref: rawhide
test: brp-llvm-compile-lto-elf
execute:
how: tmt
provision:
hardware:
memory: ">= 4 GiB"

View File

@ -1,22 +0,0 @@
- hosts: localhost
pre_tasks:
# We want to make sure libomp is not already present on the system to ensure
# that clang pulls in the correct libomp dependencies when it is installed.
- name: Uninstall libomp
package:
name: "{{ item }}"
state: absent
with_items:
- libomp
- libomp-devel
roles:
- role: standard-test-basic
tags:
- classic
repositories:
- repo: "https://src.fedoraproject.org/tests/clang.git"
dest: "clang"
required_packages:
- clang
tests:
- clang/libomp

View File

@ -1,35 +0,0 @@
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
required_packages:
- clang
- llvm-test-suite
- ninja-build
- gcc-x86_64-linux-gnu
# FIXME: It would be nice if we could only install dependencies for a
# single test rather than installing dependencies for all tests. This
# will help us catch bugs with implicit package dependencies e.g.
# package A depends on package B but does not have an explicit Requires.
# These are required for the llvm-toolchain test:
- clang
- lld
- compiler-rt
- libcxx-devel
- glibc-devel
- gcc
repositories:
- repo: "https://src.fedoraproject.org/tests/llvm-test-suite.git"
dest: "llvm-test-suite"
- repo: "https://src.fedoraproject.org/tests/clang.git"
dest: "clang"
tests:
- rhbz#482491:
dir: ./
run: echo "int main(){}" | clang -x c -
- llvm-test-suite/test-suite
- llvm-test-suite/abi-test-suite
- clang/rhbz_1657544
- clang/rhbz_1647130
- clang/llvm-toolchain

View File

@ -1,28 +0,0 @@
# This is separate from tests.yml because we want to run the tests without
# clang installed.
# FIXME: Is there some way we can put this yaml definition in the tests/pocl
# repo? Right now we need to copy and paste this everywhere the test is run.
- hosts: localhost
pre_tasks:
# Programs linked against pocl should be able to run without clang installed,
# so when we run the test we want to make sure clang is not installed to
# verify we haven't introduced an implicit dependency on clang.
- name: Uninstall clang
package:
name: clang
state: absent
tags: classic
roles:
- role: standard-test-basic
tags:
- classic
repositories:
- repo: "https://src.fedoraproject.org/tests/pocl.git"
dest: "pocl"
required_packages:
- ocl-icd-devel
- pocl
- gcc
tests:
# rhbz#1582884
- pocl/simple-opencl-no-clang:

124
tsa.patch Normal file
View File

@ -0,0 +1,124 @@
commit cf8e189a99f988398a48148b9ea7901948665ab0
Author: Timm Bäder <tbaeder@redhat.com>
Date: Wed Sep 6 12:19:20 2023 +0200
[clang][TSA] Thread safety cleanup functions
Consider cleanup functions in thread safety analysis.
Differential Revision: https://reviews.llvm.org/D152504
diff --git a/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h b/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
index 9d28325c1ea6..13e37ac2b56b 100644
--- a/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
+++ b/clang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
@@ -361,7 +361,7 @@ public:
unsigned NumArgs = 0;
// Function arguments
- const Expr *const *FunArgs = nullptr;
+ llvm::PointerUnion<const Expr *const *, til::SExpr *> FunArgs = nullptr;
// is Self referred to with -> or .?
bool SelfArrow = false;
diff --git a/clang/lib/Analysis/ThreadSafety.cpp b/clang/lib/Analysis/ThreadSafety.cpp
index 3107d035254d..3e6ceb7d54c4 100644
--- a/clang/lib/Analysis/ThreadSafety.cpp
+++ b/clang/lib/Analysis/ThreadSafety.cpp
@@ -1773,7 +1773,8 @@ void BuildLockset::checkPtAccess(const Expr *Exp, AccessKind AK,
///
/// \param Exp The call expression.
/// \param D The callee declaration.
-/// \param Self If \p Exp = nullptr, the implicit this argument.
+/// \param Self If \p Exp = nullptr, the implicit this argument or the argument
+/// of an implicitly called cleanup function.
/// \param Loc If \p Exp = nullptr, the location.
void BuildLockset::handleCall(const Expr *Exp, const NamedDecl *D,
til::LiteralPtr *Self, SourceLocation Loc) {
@@ -2417,6 +2418,15 @@ void ThreadSafetyAnalyzer::runAnalysis(AnalysisDeclContext &AC) {
AD.getTriggerStmt()->getEndLoc());
break;
}
+
+ case CFGElement::CleanupFunction: {
+ const CFGCleanupFunction &CF = BI.castAs<CFGCleanupFunction>();
+ LocksetBuilder.handleCall(/*Exp=*/nullptr, CF.getFunctionDecl(),
+ SxBuilder.createVariable(CF.getVarDecl()),
+ CF.getVarDecl()->getLocation());
+ break;
+ }
+
case CFGElement::TemporaryDtor: {
auto TD = BI.castAs<CFGTemporaryDtor>();
diff --git a/clang/lib/Analysis/ThreadSafetyCommon.cpp b/clang/lib/Analysis/ThreadSafetyCommon.cpp
index b8286cef396c..63cc66852a9e 100644
--- a/clang/lib/Analysis/ThreadSafetyCommon.cpp
+++ b/clang/lib/Analysis/ThreadSafetyCommon.cpp
@@ -110,7 +110,8 @@ static StringRef ClassifyDiagnostic(QualType VDT) {
/// \param D The declaration to which the attribute is attached.
/// \param DeclExp An expression involving the Decl to which the attribute
/// is attached. E.g. the call to a function.
-/// \param Self S-expression to substitute for a \ref CXXThisExpr.
+/// \param Self S-expression to substitute for a \ref CXXThisExpr in a call,
+/// or argument to a cleanup function.
CapabilityExpr SExprBuilder::translateAttrExpr(const Expr *AttrExp,
const NamedDecl *D,
const Expr *DeclExp,
@@ -144,7 +145,11 @@ CapabilityExpr SExprBuilder::translateAttrExpr(const Expr *AttrExp,
if (Self) {
assert(!Ctx.SelfArg && "Ambiguous self argument");
- Ctx.SelfArg = Self;
+ assert(isa<FunctionDecl>(D) && "Self argument requires function");
+ if (isa<CXXMethodDecl>(D))
+ Ctx.SelfArg = Self;
+ else
+ Ctx.FunArgs = Self;
// If the attribute has no arguments, then assume the argument is "this".
if (!AttrExp)
@@ -312,8 +317,14 @@ til::SExpr *SExprBuilder::translateDeclRefExpr(const DeclRefExpr *DRE,
? (cast<FunctionDecl>(D)->getCanonicalDecl() == Canonical)
: (cast<ObjCMethodDecl>(D)->getCanonicalDecl() == Canonical)) {
// Substitute call arguments for references to function parameters
- assert(I < Ctx->NumArgs);
- return translate(Ctx->FunArgs[I], Ctx->Prev);
+ if (const Expr *const *FunArgs =
+ Ctx->FunArgs.dyn_cast<const Expr *const *>()) {
+ assert(I < Ctx->NumArgs);
+ return translate(FunArgs[I], Ctx->Prev);
+ }
+
+ assert(I == 0);
+ return Ctx->FunArgs.get<til::SExpr *>();
}
}
// Map the param back to the param of the original function declaration
diff --git a/clang/test/Sema/warn-thread-safety-analysis.c b/clang/test/Sema/warn-thread-safety-analysis.c
index 355616b73d96..642ea88ec3c9 100644
--- a/clang/test/Sema/warn-thread-safety-analysis.c
+++ b/clang/test/Sema/warn-thread-safety-analysis.c
@@ -72,6 +72,8 @@ int get_value(int *p) SHARED_LOCKS_REQUIRED(foo_.mu_){
return *p;
}
+void unlock_scope(struct Mutex *const *mu) __attribute__((release_capability(**mu)));
+
int main(void) {
Foo_fun1(1); // expected-warning{{calling function 'Foo_fun1' requires holding mutex 'mu2'}} \
@@ -127,6 +129,13 @@ int main(void) {
// expected-note@-1{{mutex released here}}
mutex_shared_unlock(&mu1); // expected-warning {{releasing mutex 'mu1' that was not held}}
+ /// Cleanup functions
+ {
+ struct Mutex* const __attribute__((cleanup(unlock_scope))) scope = &mu1;
+ mutex_exclusive_lock(scope); // Note that we have to lock through scope, because no alias analysis!
+ // Cleanup happens automatically -> no warning.
+ }
+
return 0;
}