summaryrefslogtreecommitdiff
path: root/lang/clang
AgeCommit message (Collapse)AuthorFilesLines
2021-07-12clang: updated to 12.0.1adam8-71/+100
12.0.1: Non-comprehensive list of changes in this release The builtin intrinsics __builtin_bitreverse8, __builtin_bitreverse16, __builtin_bitreverse32 and __builtin_bitreverse64 may now be used within constant expressions. The builtin intrinsics __builtin_rotateleft8, __builtin_rotateleft16, __builtin_rotateleft32 and __builtin_rotateleft64 may now be used within constant expressions. The builtin intrinsics __builtin_rotateright8, __builtin_rotateright16, __builtin_rotateright32 and __builtin_rotateright64 may now be used within constant expressions. New Compiler Flags … AArch64 options -moutline-atomics, -mno-outline-atomics to enable and disable calls to helper functions implementing atomic operations. These out-of-line helpers like ‘__aarch64_cas8_relax’ will detect at runtime AArch64 Large System Extensions (LSE) availability and either use their atomic instructions, or falls back to LL/SC loop. These options do not apply if the compilation target supports LSE. Atomic instructions are used directly in that case. The option’s behaviour mirrors GCC, the helpers are implemented both in compiler-rt and libgcc. New option -fbinutils-version= specifies the targeted binutils version. For example, -fbinutils-version=2.35 means compatibility with GNU as/ld before 2.35 is not needed: new features can be used and there is no need to work around old GNU as/ld bugs. Deprecated Compiler Flags The following options are deprecated and ignored. They will be removed in future versions of Clang. The clang-cl /fallback flag, which made clang-cl invoke Microsoft Visual C++ on files it couldn’t compile itself, has been deprecated. It will be removed in Clang 13. … Modified Compiler Flags On ELF, -gz now defaults to -gz=zlib with the integrated assembler. It produces SHF_COMPRESSED style compression of debug information. GNU binutils 2.26 or newer, or lld is required to link produced object files. Use -gz=zlib-gnu to get the old behavior. Now that this pointers are tagged with nonnull and dereferenceable(N), -fno-delete-null-pointer-checks has gained the power to remove the nonnull attribute on this for configurations that need it to be nullable. -gsplit-dwarf no longer implies -g2. -fasynchronous-unwind-tables is now the default on Linux AArch64/PowerPC. This behavior matches newer GCC. (D91760) (D92054) Support has been added for the following processors (command-line identifiers in parentheses): Arm Cortex-A78C (cortex-a78c). Arm Cortex-R82 (cortex-r82). Arm Neoverse V1 (neoverse-v1). Arm Neoverse N2 (neoverse-n2). Fujitsu A64FX (a64fx). For example, to select architecture support and tuning for Neoverse-V1 based systems, use -mcpu=neoverse-v1. Removed Compiler Flags The following options no longer exist. clang-cl’s /Zd flag no longer exist. But -gline-tables-only still exists and does the same thing. New Pragmas in Clang … Modified Pragmas in Clang The “#pragma clang loop vectorize_width” has been extended to support an optional ‘fixed|scalable’ argument, which can be used to indicate that the compiler should use fixed-width or scalable vectorization. Fixed-width is assumed by default. Scalable or vector length agnostic vectorization is an experimental feature for targets that support scalable vectors. For more information please refer to the Clang Language Extensions documentation. Attribute Changes in Clang Added support for the C++20 likelihood attributes [[likely]] and [[unlikely]]. As an extension they can be used in C++11 and newer. This extension is enabled by default.
2021-06-21clang: add BUILDLINK_FILES to work around cmake changesnia1-1/+22
2021-05-24*: recursive bump for perl 5.34wiz1-2/+2
2020-12-04Revbump packages with a runtime Python dep but no version prefix.nia1-2/+2
For the Python 3.8 default switch.
2020-11-05*: Recursive revbump from textproc/icu-68.1ryoon2-3/+4
2020-08-31*: bump PKGREVISION for perl-5.32.wiz1-1/+2
2020-07-26llvm: updated to 10.0.1adam2-7/+6
10.0.1: Bug fix release
2020-07-02clang: update to 10.0.0nb4.wiz2-4/+6
Make perl a run-time dependency to fix ERROR: [check-interpreter.mk] The interpreter "/usr/pkg/bin/perl" of "/usr/pkg/bin/scan-build" does not exist. ERROR: [check-interpreter.mk] The interpreter "/usr/pkg/bin/perl" of "/usr/pkg/libexec/c++-analyzer" does not exist. ERROR: [check-interpreter.mk] The interpreter "/usr/pkg/bin/perl" of "/usr/pkg/libexec/ccc-analyzer" does not exist.
2020-07-01clang: build with static analizer (default and needed for ↵adam4-9/+25
clang-tools-extra); remove clang-static-analyzer
2020-06-05clang: Remove patch chunk that snuck back in.jperkin2-12/+11
2020-06-02Revbump for icuadam1-2/+2
2020-05-07lang/clang: fix detection of libstdc++rillig2-3/+4
In the previous commit, I had missed a negation in the empty(...) condition. PKGREVISION++ to notify clang users of the fix. https://mail-index.netbsd.org/pkgsrc-users/2020/05/07/msg031132.html
2020-04-26lang/clang: avoid unnecessary shell commandrillig1-5/+12
The "echo NO" is not necessary since the output of the shell command is immediately inspected. Therefore there is no need to use the :sh modifier.
2020-04-18clang: better PLISTadam1-140/+140
2020-04-18clang: updated to 10.0.0adam6-197/+251
What’s New in Clang 10.0.0? Some of the major new features and improvements to Clang are listed here. Generic improvements to Clang as a whole or to its underlying infrastructure are described first, followed by language-specific sections with improvements to Clang’s support for those languages. Major New Features clang used to run the actual compilation in a subprocess (“clang -cc1”). Now compilations are done in-process by default. -fno-integrated-cc1 restores the former behavior. The -v and -### flags will print “(in-process)” when compilations are done in-process. Concepts support. Clang now supports C++2a Concepts under the -std=c++2a flag. Improvements to Clang’s diagnostics -Wtautological-overlap-compare will warn on negative numbers and non-int types. -Wtautological-compare for self comparisons and -Wtautological-overlap-compare will now look through member and array access to determine if two operand expressions are the same. -Wtautological-bitwise-compare is a new warning group. This group has the current warning which diagnoses the tautological comparison of a bitwise operation and a constant. The group also has the new warning which diagnoses when a bitwise-or with a non-negative value is converted to a bool, since that bool will always be true. -Wbitwise-conditional-parentheses will warn on operator precedence issues when mixing bitwise-and (&) and bitwise-or (|) operator with the conditional operator (?:). -Wrange-loop-analysis got several improvements. It no longer warns about a copy being made when the result is bound to an rvalue reference. It no longer warns when an object of a small, trivially copyable type is copied. The warning now offers fix-its. Excluding -Wrange-loop-bind-reference it is now part of -Wall. To reduce the number of false positives the diagnostic is disabled in macros and template instantiations. -Wmisleading-indentation has been added. This warning is similar to the GCC warning of the same name. It warns about statements that are indented as if they were part of a if/else/for/while statement but are not semantically part of that if/else/for/while. -Wbitwise-op-parentheses and -Wlogical-op-parentheses are disabled by default. The new warnings -Wc99-designator and -Wreorder-init-list warn about uses of C99 initializers in C++ mode for cases that are valid in C99 but not in C++20. The new warning -Wsizeof-array-div catches cases like int arr[10]; ...sizeof(arr) / sizeof(short)... (should be sizeof(arr) / sizeof(int)), and the existing warning -Wsizeof-pointer-div catches more cases. The new warning -Wxor-used-as-pow warns on cases where it looks like the xor operator ^ is used to be mean exponentiation, e.g. 2 ^ 16. The new warning -Wfinal-dtor-non-final-class warns on classes that have a final destructor but aren’t themselves marked final. -Wextra now enables -Wdeprecated-copy. The warning deprecates move and copy constructors in classes where an explicit destructor is declared. This is for compatibility with GCC 9, and forward looking for a change that’s being considered for C++23. You can disable it with -Wno-deprecated-copy. Non-comprehensive list of changes in this release In both C and C++ (C17 6.5.6p8, C++ [expr.add]), pointer arithmetic is only permitted within arrays. In particular, the behavior of a program is not defined if it adds a non-zero offset (or in C, any offset) to a null pointer, or if it forms a null pointer by subtracting an integer from a non-null pointer, and the LLVM optimizer now uses those guarantees for transformations. This may lead to unintended behavior in code that performs these operations. The Undefined Behavior Sanitizer -fsanitize=pointer-overflow check has been extended to detect these cases, so that code relying on them can be detected and fixed. The Implicit Conversion Sanitizer (-fsanitize=implicit-conversion) has learned to sanitize pre/post increment/decrement of types with bit width smaller than int. For X86 target, -march=skylake-avx512, -march=icelake-client, -march=icelake-server, -march=cascadelake, -march=cooperlake will default to not using 512-bit zmm registers in vectorized code unless 512-bit intrinsics are used in the source code. 512-bit operations are known to cause the CPUs to run at a lower frequency which can impact performance. This behavior can be changed by passing -mprefer-vector-width=512 on the command line. Clang now defaults to .init_array on Linux. It used to use .ctors if the found GCC installation is older than 4.7.0. Add -fno-use-init-array to get the old behavior (.ctors). The behavior of the flag -flax-vector-conversions has been modified to more closely match GCC, as described below. In Clang 10 onwards, command lines specifying this flag do not permit implicit vector bitcasts between integer vectors and floating-point vectors. Such conversions are still permitted by default, however, and the default can be explicitly requested with the Clang-specific flag -flax-vector-conversions=all. In a future release of Clang, we intend to change the default to -fno-lax-vector-conversions. Improved support for octeon MIPS-family CPU. Added octeon+ to the list of of CPUs accepted by the driver. For the WebAssembly target, the wasm-opt tool will now be run if it is found in the PATH, which can reduce code size. For the RISC-V target, floating point registers can now be used in inline assembly constraints. New Compiler Flags The -fgnuc-version= flag now controls the value of __GNUC__ and related macros. This flag does not enable or disable any GCC extensions implemented in Clang. Setting the version to zero causes Clang to leave __GNUC__ and other GNU-namespaced macros, such as __GXX_WEAK__, undefined. vzeroupper insertion on X86 targets can now be disabled with -mno-vzeroupper. You can also force vzeroupper insertion to be used on CPUs that normally wouldn’t with -mvzeroupper. The -fno-concept-satisfaction-caching can be used to disable caching for satisfactions of Concepts. The C++2a draft standard does not currently permit this caching, but disabling it may incur significant compile-time costs. This flag is intended for experimentation purposes and may be removed at any time; please let us know if you encounter a situation where you need to specify this flag for correct program behavior. The -ffixed-xX flags now work on RISC-V. These reserve the corresponding general-purpose registers. RISC-V has added -mcmodel=medany and -mcmodel=medlow as aliases for -mcmodel=small and -mcmodel=medium respectively. Preprocessor definitions for __riscv_cmodel_medlow and __riscv_cmodel_medany have been corrected. -fmacro-prefix-map=OLD=NEW substitutes directory prefix OLD for NEW in predefined preprocessor macros such as __FILE__. This helps with reproducible builds that are location independent. The new -ffile-prefix-map option is equivalent to specifying both -fdebug-prefix-map and -fmacro-prefix-map. -fpatchable-function-entry=N[,M] is added to generate M NOPs before the function entry and N-M NOPs after the function entry. This is used by AArch64 ftrace in the Linux kernel. -mbranches-within-32B-boundaries is added as an x86 assembler mitigation for Intel’s Jump Condition Code Erratum. Deprecated Compiler Flags The following options are deprecated and ignored. They will be removed in future versions of Clang. -mmpx used to enable the __MPX__ preprocessor define for the Intel MPX instructions. There were no MPX intrinsics. -mno-mpx used to disable -mmpx and is the default behavior. -fconcepts-ts previously used to enable experimental concepts support. Use -std=c++2a instead to enable Concepts support. Modified Compiler Flags RISC-V now sets the architecture (riscv32/riscv64) based on the value provided to the -march flag, overriding the target provided by -triple. -flax-vector-conversions has been split into three different levels of laxness, and has been updated to match the GCC semantics: -flax-vector-conversions=all: This is Clang’s current default, and permits implicit vector conversions (performed as bitcasts) between any two vector types of the same overall bit-width. Former synonym: -flax-vector-conversions (Clang <= 9). -flax-vector-conversions=integer: This permits implicit vector conversions (performed as bitcasts) between any two integer vector types of the same overall bit-width. Synonym: -flax-vector-conversions (Clang >= 10). -flax-vector-conversions=none: Do not perform any implicit bitcasts between vector types. Synonym: -fno-lax-vector-conversions. -debug-info-kind now has an option -debug-info-kind=constructor, which is one level below -debug-info-kind=limited. This option causes debug info for classes to be emitted only when a constructor is emitted. RISC-V now chooses a slightly different sysroot path and defaults to using compiler-rt if no GCC installation is detected. RISC-V now supports multilibs in baremetal environments. This support does not extend to supporting multilib aliases. Attribute Changes in Clang Support was added for function __attribute__((target("branch-protection=...")))
2020-03-26clang: Bump GCC_REQDnia1-2/+2
2020-03-24lang/clang: fix nonexistent SUBST_FILESrillig1-4/+3
This restores the intended behavior of patching the NetBSD toolchain.
2020-01-26all: migrate homepages from http to httpsrillig1-2/+2
pkglint -r --network --only "migrate" As a side-effect of migrating the homepages, pkglint also fixed a few indentations in unrelated lines. These and the new homepages have been checked manually.
2019-12-29llvm: updated to 9.0.1adam4-14/+13
9.0.1 is a bug-fix release.
2019-11-03lang: align variable assignmentsrillig1-2/+2
pkglint -Wall -F --only aligned --only indent -r No manual corrections.
2019-11-03lld: Cherry-pick NetBSD LLD pending patch from reviewkamil3-3/+20
[LLD] Add NetBSD support as a new flavor of LLD (nb.lld) https://reviews.llvm.org/D69755
2019-10-24catch up with llvm relicensing and bump PKGREVISIONstnn2-4/+4
2019-10-21Fixed C++ constructors on aarch64.rjs2-2/+4
2019-10-21Make C++ constructors work for aarch64.rjs1-0/+26
Discussed here: <http://mail-index.netbsd.org/tech-toolchain/2019/08/29/msg003611.html>
2019-10-19clang: updated to 9.0.0adam6-72/+81
9.0.0: Major New Features * Experimental support for C++ for OpenCL has been added. Non-comprehensive list of changes in this release * The __VERSION__ macro has been updated. Previously this macro contained the string ‘4.2.1 Compatible’ to achieve compatibility with GCC 4.2.1, but that should no longer be necessary. However, to retrieve Clang’s version, please favor the one of the macro defined in clang namespaced version macros. New Compiler Flags * -ftime-trace and ftime-trace-granularity=N Emits flame chart style compilation time report in chrome://tracing and speedscope.app compatible format. A trace .json file is written next to the compiled object file, containing hierarchical time information about frontend activities (file parsing, template instantiation) and backend activities (modules and functions being optimized, optimization passes). Modified Compiler Flags * clang -dumpversion now returns the version of Clang itself. Windows Support * clang-cl now treats non-existent files as possible typos for flags, clang-cl /diagnostic:caret /c test.cc for example now produces clang: error: no such file or directory: '/diagnostic:caret'; did you mean '/diagnostics:caret'? * clang now parses the __declspec(allocator) specifier and generates debug information, so that memory usage can be tracked in Visual Studio. * The -print-search-dirs option now separates elements with semicolons, as is the norm for path lists on Windows * Improved handling of dllexport in conjunction with explicit template instantiations for MinGW, to allow building a shared libc++ for MinGW without --export-all-symbols to override the dllexport attributes
2019-08-26clang: fix CMAKE_ARGS.Darwinadam1-3/+3
2019-08-05llvm: updated to 8.0.1adam2-8/+10
LLVM 8.0.1 is now available! Download it now, or read the release notes. This release contains bug-fixes for the LLVM 8.0.0 release. This release is API and ABI compatible with 8.0.0.
2019-06-06clang: bump version in bl3adam1-2/+2
2019-06-02clang: updated to 8.0.0adam4-31/+51
Clang 8.0.0: Major New Features * Clang supports use of a profile remapping file, which permits profile data captured for one version of a program to be applied when building another version where symbols have changed (for example, due to renaming a class or namespace). See the UsersManual for details. * Clang has new options to initialize automatic variables with a pattern. The default is still that automatic variables are uninitialized. This isn’t meant to change the semantics of C and C++. Rather, it’s meant to be a last resort when programmers inadvertently have some undefined behavior in their code. These options aim to make undefined behavior hurt less, which security-minded people will be very happy about. * Improvements to Clang’s diagnostics Non-comprehensive list of changes in this release * The experimental feature Pretokenized Headers (PTH) was removed in its entirely from Clang. The feature did not properly work with about 1/3 of the possible tokens available and was unmaintained. * The internals of libc++ include directory detection on MacOS have changed. Instead of running a search based on the -resource-dir flag, the search is now based on the path of the compiler in the filesystem. The default behaviour should not change. However, if you override -resource-dir manually and rely on the old behaviour you will need to add appropriate compiler flags for finding the corresponding libc++ include directory. * The integrated assembler is used now by default for all MIPS targets. * Improved support for MIPS N32 ABI and MIPS R6 target triples. * Clang now includes builtin functions for bitwise rotation of common value sizes, such as: __builtin_rotateleft32 * Improved optimization for the corresponding MSVC compatibility builtins such as _rotl().
2019-04-25PKGREVISION bump for anything using python without a PYPKGPREFIX.maya1-2/+2
This is a semi-manual PKGREVISION bump.
2019-03-27clang-tools-extra: added version 7.0.1adam2-6/+6
Extra tools built using Clang's tooling APIs.
2019-01-27llvm/DESCR: reword statements that are no longer truetnn1-2/+2
2019-01-23clang: Fix SunOS include paths. Bump PKGREVISION.jperkin4-14/+90
2018-12-23llvm and friends: updated to 7.0.1adam2-7/+7
7.0.1: This release contains bug-fixes for the LLVM 7.0.0 release. This release is API and ABI compatible with 7.0.0.
2018-12-09llvm: updated to 7.0.0adam9-122/+120
LLVM 7.0.0 Release The release contains the work on trunk up to SVN revision 338536 plus work on the release branch. It is the result of the community's work over the past six months, including: function multiversioning in Clang with the 'target' attribute for ELF-based x86/x86_64 targets, improved PCH support in clang-cl, preliminary DWARF v5 support, basic support for OpenMP 4.5 offloading to NVPTX, OpenCL C++ support, MSan, X-Ray and libFuzzer support for FreeBSD, early UBSan, X-Ray and libFuzzer support for OpenBSD, UBSan checks for implicit conversions, many long-tail compatibility issues fixed in lld which is now production ready for ELF, COFF and MinGW, new tools llvm-exegesis, llvm-mca and diagtool. And as usual, many optimizations, improved diagnostics, and bug fixes. For more details, see the release notes: https://llvm.org/releases/7.0.0/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html https://llvm.org/releases/7.0.0/tools/lld/docs/ReleaseNotes.html
2018-10-24clang: enable __float128 on netbsd/x86maya3-5/+31
While it is debatable whether we want to have this definition upstream, this is very necessary in the package for the purpose of building www/firefox once it is updated to 63.0. This is because netbsd's base libstdc++ has some __float128 in headers and otherwise we get fatal errors in clang builds, or in firefox's case, when generating bindings for Rust via clang. PR toolchain/53679 Bump PKGREVISION.
2018-08-09clang: Use the full LLVM suite on SunOS.jperkin6-2/+292
This enables compiler-rt, libcxx, and libunwind, as well as fixing various assumptions in the code about what should be set on SunOS. In bulk builds a while back this was able to compete favourably with GCC.
2018-08-07llvm: updated to 6.0.1adam3-13/+65
6.0.1: Non-comprehensive list of changes in this release Support for retpolines was added to help mitigate “branch target injection” (variant 2) of the “Spectre” speculative side channels described by Project Zero and the Spectre paper. The Redirects argument of llvm::sys::ExecuteAndWait and llvm::sys::ExecuteNoWait was changed to an ArrayRef of optional StringRef‘s to make it safer and more convenient to use. The backend name was added to the Target Registry to allow run-time information to be fed back into TableGen. Out-of-tree targets will need to add the name used in the def X : Target definition to the call to RegisterTarget. The Debugify pass was added to opt to facilitate testing of debug info preservation. This pass attaches synthetic DILocations and DIVariables to the instructions in a Module. The CheckDebugify pass determines how much of the metadata is lost. Significantly improved quality of CodeView debug info for Windows. Preliminary support for Sanitizers and sibling features on X86(_64) NetBSD (ASan, UBsan, TSan, MSan, SafeStack, libFuzzer). Changes to the LLVM IR ---------------------- The fast-math-flags (FMF) have been updated. Previously, the ‘fast’ flag indicated that floating-point reassociation was allowed and all other flags were set too. The ‘fast’ flag still exists, but there is a new flag called ‘reassoc’ to indicate specifically that reassociation is allowed. A new bit called ‘afn’ was also added to selectively allow approximations for common mathlib functions like square-root. The new flags provide more flexibility to enable/disable specific floating-point optimizations. Making the optimizer respond appropriately to these flags is an ongoing effort. Changes to the AArch64 Target ----------------------------- Enabled the new GlobalISel instruction selection framework by default at -O0. Changes to the ARM Target ------------------------- Support for enabling SjLj exception handling on platforms where it isn’t the default. Changes to the Hexagon Target ----------------------------- The Hexagon backend now supports V65 ISA. The -mhvx option now takes an optional value that specifies the ISA version of the HVX coprocessor. The available values are v60, v62 and v65. By default, the value is set to be the same as the CPU version. The compiler option -mhvx-double is deprecated and will be removed in the next release of the compiler. Programmers should use the -mhvx-length option to specify the desired vector length: -mhvx-length=64b for 64-byte vectors and -mhvx-length=128b for 128-byte vectors. While the current default vector length is 64 bytes, users should always specify the length explicitly, since the default value may change in the future. The target feature hvx-double is deprecated and will be removed in the next release. LLVM IR generators should use target features hvx-length64b and hvx-length128b to indicate the vector length. The length should always be specified when HVX code generation is enabled. Changes to the MIPS Target -------------------------- Fixed numerous bugs: fpowi on MIPS64 giving incorrect results when used with a negative integer. Usage of the asm ‘c’ constraint with the wrong datatype causing an assert/crash. Fixed a conversion bug when using the DSP ASE. Fixed an inconsistency where objects were not marked as using the microMIPS as when the micromips function attribute or the ”.set micromips” directive was used. Reordered the MIPSR6 specific hazard scheduler pass to after the delay slot filler, fixing a class of rare edge case bugs where the delay slot filler would violate ISA restrictions. Fixed a crash when using a type of unknown size with gp relative addressing. Corrected the j macro for microMIPS. Corrected the encoding of movep for microMIPS32r6. Fixed an issue with the usage of insert instructions having an invalid set of operands. Fixed an issue where TLS symbols were not marked as such. Enabled the usage of register scavenging with MSA, due to its shorter offsets for loads and stores. Corrected the ELF headers when using the DSP ASE. New features: The long branch pass now generates some R6 specific instructions when targeting MIPSR6. The delay slot filler now performs more branch conversions if delay slots cannot be filled. The MIPS MT ASE is now fully supported. Added support for the lapc pseudo instruction. Improved the selection of multiple instructions (dext, nmadd, nmsub). Further improved microMIPS codesize reduction. Deprecation notices: microMIPS64R6 support was been deprecated since 5.0, and has now been completely removed. Changes to the SystemZ Target ----------------------------- During this release the SystemZ target has: Added support for 128-bit atomic operations. Added support for the “o” constraint for inline asm statements. Changes to the X86 Target ------------------------- During this release the X86 target has: Added support for enabling SjLj exception handling on platforms where it isn’t the default. Added intrinsics for Intel Extensions: VAES, GFNI, VPCLMULQDQ, AVX512VBMI2, AVX512BITALG, AVX512VNNI. Added support for Intel Icelake CPU. Fixed some X87 codegen bugs. Added instruction scheduling information for Intel Sandy Bridge, Ivy Bridge, Haswell, Broadwell, and Skylake CPUs. Improved scheduler model for AMD Jaguar CPUs. Improved llvm-mc’s disassembler for some EVEX encoded instructions. Add support for i8 and i16 vector signed/unsigned min/max horizontal reductions. Improved codegen for memory comparisons Improved codegen for i32 vector multiplies Improved codegen for scalar integer absolute values Improved codegen for vector integer rotations (XOP and AVX512) Improved codegen of data being transferred between GPRs and K-registers. Improved codegen for vector truncations. Improved folding of address computations into gather/scatter instructions. Gained initial support recognizing variable shuffles from vector element extracts and inserts. Improved documentation for SSE/AVX intrinsics in intrin.h header files. Gained support for emitting retpolines, including automatic insertion of the necessary thunks or using external thunks.
2018-05-22llvm: updated to 5.0.2adam2-7/+7
5.0.2: Bug fix release.
2018-02-07Belatedly bump requirement. 4.0 and 5.0 are not API (nor ABI)joerg1-2/+2
compatible.
2017-12-30llvm: updated to 5.0.1adam4-27/+13
LLVM 5.0.1: This release contains bug-fixes for the LLVM 5.0.0 release. This release is API and ABI compatible with 5.0.0.
2017-12-01llvm: updated to 5.0.0adam3-10/+40
5.0.0: Non-comprehensive list of changes in this release * LLVM’s WeakVH has been renamed to WeakTrackingVH and a new WeakVH has been introduced. The new WeakVH nulls itself out on deletion, but does not track values across RAUW. * A new library named BinaryFormat has been created which holds a collection of code which previously lived in Support. This includes the file_magic structure and identify_magic functions, as well as all the structure and type definitions for DWARF, ELF, COFF, WASM, and MachO file formats. * The tool llvm-pdbdump has been renamed llvm-pdbutil to better reflect its nature as a general purpose PDB manipulation / diagnostics tool that does more than just dumping contents. * The BBVectorize pass has been removed. It was fully replaced and no longer used back in 2014 but we didn’t get around to removing it. Now it is gone. The SLP vectorizer is the suggested non-loop vectorization pass. * A new tool opt-viewer.py has been added to visualize optimization remarks in HTML. The tool processes the YAML files produced by clang with the -fsave-optimization-record option. * A new CMake macro LLVM_REVERSE_ITERATION has been added. If enabled, all supported unordered LLVM containers would be iterated in reverse order. This is useful for uncovering non-determinism caused by iteration of unordered containers. Currently, it supports reverse iteration of SmallPtrSet and DenseMap. * A new tool llvm-dlltool has been added to create short import libraries from GNU style definition files. The tool utilizes the PE COFF SPEC Import Library Format and PE COFF Auxiliary Weak Externals Format to achieve compatibility with LLD and MSVC LINK.
2017-07-11Changes 4.0.1:adam3-9/+9
This is a bug-fix release.
2017-06-01Use public SHLIB_TYPE instead of private _OPSYS_SHLIB_TYPE.jlam1-2/+2
2017-05-05Update buildlink3.mk with reality in LLVM projectskamil1-2/+2
2017-05-05Reduce diff with pkgsrc-wip/clang-gitkamil1-4/+4
This also fixes linking with libstdc++ in clang and should make it usable.
2017-05-03Convert CXXFLAGS setting C++ standard to USE_LANGUAGES.jperkin1-6/+2
2017-03-17LLVM 4.0.0:adam4-16/+26
The minimum compiler version required for building LLVM has been raised to 4.8 for GCC and 2015 for Visual Studio. The C API functions LLVMAddFunctionAttr, LLVMGetFunctionAttr, LLVMRemoveFunctionAttr, LLVMAddAttribute, LLVMRemoveAttribute, LLVMGetAttribute, LLVMAddInstrAttribute and LLVMRemoveInstrAttribute have been removed. The C API enum LLVMAttribute has been deleted. The definition and uses of LLVM_ATRIBUTE_UNUSED_RESULT in the LLVM source were replaced with LLVM_NODISCARD, which matches the C++17 [[nodiscard]] semantics rather than gcc’s __attribute__((warn_unused_result)). The Timer related APIs now expect a Name and Description. When upgrading code the previously used names should become descriptions and a short name in the style of a programming language identifier should be added. LLVM now handles invariant.group across different basic blocks, which makes it possible to devirtualize virtual calls inside loops. The aggressive dead code elimination phase (“adce”) now removes branches which do not effect program behavior. Loops are retained by default since they may be infinite but these can also be removed with LLVM option -adce-remove-loops when the loop body otherwise has no live operations. The llvm-cov tool can now export coverage data as json. Its html output mode has also improved.
2017-01-16Use the system-specific libtool on Darwin.brook1-1/+3
This fixes bugs relating to unrecognized libtool options on Darwin.
2017-01-05Changes 3.9.1:adam3-8/+9
The LLVMContext gains a new runtime check (see LLVMContext::discardValueNames()) that can be set to discard Value names (other than GlobalValue). This is intended to be used in release builds by clients that are interested in saving CPU/memory as much as possible. There is no longer a “global context” available in LLVM, except for the C API. The autoconf build system has been removed in favor of CMake. LLVM 3.9 requires CMake 3.4.3 or later to build. For information about using CMake please see the documentation on Building LLVM with CMake. For information about the CMake language there is also a CMake Primer document available. C API functions LLVMParseBitcode, LLVMParseBitcodeInContext, LLVMGetBitcodeModuleInContext and LLVMGetBitcodeModule having been removed. LLVMGetTargetMachineData has been removed (use LLVMGetDataLayout instead). The C API function LLVMLinkModules has been removed. The C API function LLVMAddTargetData has been removed. The C API function LLVMGetDataLayout is deprecated in favor of LLVMGetDataLayoutStr. The C API enum LLVMAttribute and associated API is deprecated in favor of the new LLVMAttributeRef API. The deprecated functions are LLVMAddFunctionAttr, LLVMAddTargetDependentFunctionAttr, LLVMRemoveFunctionAttr, LLVMGetFunctionAttr, LLVMAddAttribute, LLVMRemoveAttribute, LLVMGetAttribute, LLVMAddInstrAttribute, LLVMRemoveInstrAttribute and LLVMSetInstrParamAlignment. TargetFrameLowering::eliminateCallFramePseudoInstr now returns an iterator to the next instruction instead of void. Targets that previously did MBB.erase(I); return; now probably want return MBB.erase(I);. SelectionDAGISel::Select now returns void. Out-of-tree targets will need to be updated to replace the argument node and remove any dead nodes in cases where they currently return an SDNode * from this interface. Added the MemorySSA analysis, which hopes to replace MemoryDependenceAnalysis. It should provide higher-quality results than MemDep, and be algorithmically faster than MemDep. Currently, GVNHoist (which is off by default) makes use of MemorySSA. The minimum density for lowering switches with jump tables has been reduced from 40% to 10% for functions which are not marked optsize (that is, compiled with -Os).