Commit graph

119 commits

Author SHA1 Message Date
wiz
29dc0af201 clang: update to 10.0.0nb4.
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-02 10:45:38 +00:00
adam
49602ce8e8 clang: build with static analizer (default and needed for clang-tools-extra); remove clang-static-analyzer 2020-07-01 14:46:36 +00:00
jperkin
893b81da94 clang: Remove patch chunk that snuck back in. 2020-06-05 15:28:54 +00:00
adam
6bd0c30da6 Revbump for icu 2020-06-02 08:22:31 +00:00
rillig
ac5b790e50 lang/clang: fix detection of libstdc++
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-05-07 20:21:41 +00:00
rillig
da3e448abb lang/clang: avoid unnecessary shell command
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-26 10:19:26 +00:00
adam
ec17d76ecb clang: better PLIST 2020-04-18 10:49:57 +00:00
adam
588bbea5f1 clang: updated to 10.0.0
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-04-18 07:53:38 +00:00
nia
33a5cc1e23 clang: Bump GCC_REQD 2020-03-26 14:47:46 +00:00
rillig
759bc77d6d lang/clang: fix nonexistent SUBST_FILES
This restores the intended behavior of patching the NetBSD toolchain.
2020-03-24 05:58:48 +00:00
rillig
9637f7852e all: migrate homepages from http to https
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.
2020-01-26 17:30:40 +00:00
adam
fa003e0fad llvm: updated to 9.0.1
9.0.1 is a bug-fix release.
2019-12-29 15:31:21 +00:00
rillig
8c6aee8563 lang: align variable assignments
pkglint -Wall -F --only aligned --only indent -r

No manual corrections.
2019-11-03 19:03:56 +00:00
kamil
cfcac6d0b1 lld: Cherry-pick NetBSD LLD pending patch from review
[LLD] Add NetBSD support as a new flavor of LLD (nb.lld)
https://reviews.llvm.org/D69755
2019-11-03 11:55:53 +00:00
tnn
c035e0f0dd catch up with llvm relicensing and bump PKGREVISIONs 2019-10-24 11:40:00 +00:00
rjs
a814cda087 Fixed C++ constructors on aarch64. 2019-10-21 11:47:16 +00:00
rjs
9b4504c675 Make C++ constructors work for aarch64.
Discussed here:

<http://mail-index.netbsd.org/tech-toolchain/2019/08/29/msg003611.html>
2019-10-21 11:14:44 +00:00
adam
ea2d39aba7 clang: updated to 9.0.0
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-10-19 13:54:29 +00:00
adam
010ac4f5fc clang: fix CMAKE_ARGS.Darwin 2019-08-26 14:56:21 +00:00
adam
b063e5dd0e llvm: updated to 8.0.1
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-08-05 19:06:49 +00:00
adam
af9e53d35b clang: bump version in bl3 2019-06-06 19:57:59 +00:00
adam
dcb1c6067c clang: updated to 8.0.0
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-06-02 08:39:28 +00:00
maya
f34a8c24a3 PKGREVISION bump for anything using python without a PYPKGPREFIX.
This is a semi-manual PKGREVISION bump.
2019-04-25 07:32:34 +00:00
adam
b3c19e281d clang-tools-extra: added version 7.0.1
Extra tools built using Clang's tooling APIs.
2019-03-27 06:24:22 +00:00
tnn
c8af09b426 llvm/DESCR: reword statements that are no longer true 2019-01-27 21:11:07 +00:00
jperkin
833db85285 clang: Fix SunOS include paths. Bump PKGREVISION. 2019-01-23 15:44:34 +00:00
adam
443df4ca98 llvm and friends: updated to 7.0.1
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-23 00:11:39 +00:00
adam
1cc70026cc llvm: updated to 7.0.0
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-12-09 20:04:38 +00:00
maya
ca8cd2e741 clang: enable __float128 on netbsd/x86
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-10-24 21:12:59 +00:00
jperkin
bfcb0895d9 clang: Use the full LLVM suite on SunOS.
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-09 14:56:41 +00:00
adam
6c333bb958 llvm: updated to 6.0.1
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-08-07 10:44:50 +00:00
adam
677a4d8af9 llvm: updated to 5.0.2
5.0.2:
Bug fix release.
2018-05-22 12:39:23 +00:00
joerg
080ce9fdf1 Belatedly bump requirement. 4.0 and 5.0 are not API (nor ABI)
compatible.
2018-02-07 12:10:21 +00:00
adam
79d51c6dab llvm: updated to 5.0.1
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-30 10:39:24 +00:00
adam
57ac13a628 llvm: updated to 5.0.0
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-12-01 19:22:12 +00:00
adam
0e12e44da9 Changes 4.0.1:
This is a bug-fix release.
2017-07-11 19:47:37 +00:00
jlam
000f312c98 Use public SHLIB_TYPE instead of private _OPSYS_SHLIB_TYPE. 2017-06-01 13:30:24 +00:00
kamil
53397f9859 Update buildlink3.mk with reality in LLVM projects 2017-05-05 23:13:05 +00:00
kamil
c3143caa8a Reduce diff with pkgsrc-wip/clang-git
This also fixes linking with libstdc++ in clang and should make it usable.
2017-05-05 22:47:00 +00:00
jperkin
6b547497bb Convert CXXFLAGS setting C++ standard to USE_LANGUAGES. 2017-05-03 08:38:38 +00:00
adam
60b9132584 LLVM 4.0.0:
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-03-17 22:38:17 +00:00
brook
8f064fc680 Use the system-specific libtool on Darwin.
This fixes bugs relating to unrecognized libtool options on Darwin.
2017-01-16 17:26:47 +00:00
adam
a3ebdf18b6 Changes 3.9.1:
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).
2017-01-05 11:54:32 +00:00
joerg
6818ae5252 Revert. 2016-12-17 23:28:51 +00:00
joerg
0de27f6641 Explicitly build LLVM projects with -std=c++11, it doesn't get detected
automatically in all cases.
2016-12-17 23:28:34 +00:00
ryoon
861be02d4d Update llvm packages to 3.9.0
* Drop CppBackend. It is removed.

Changelog:
* GCC ABI Tag
* LLVM IR: new intrinsics etc.
* Change LLVM IPO model
* Support ThinLTO
* Improve the ARM targets, ARMv8.2-A support etc.
* Improve the MIPS targets
* Improve the PowerPC target, default optim O3 to O2
* Improve the X86 target, SKylake AVX-512 etc.
* Improve the AMDGPU, better support for Mesa 12
2016-11-14 20:15:32 +00:00
wiz
1ea1c32028 Update llvm and clang* to 3.8.1.
This release contains bug-fixes for the LLVM 3.8.0 release. This
release is API and ABI compatible with 3.8.0.
2016-07-26 12:43:51 +00:00
tnn
b861e8f85b Update to clang-3.8.0. Split out llvm tools to lang/llvm.
Packaged in pkgsrc-wip by myself and Kamil.
Remove stale pkgsrc/SunOS bread crumbs that were difficult to merge
following the build framework switch. Needs to be redone. (Sorry!)

Summary of significant changes in LLVM:
- switch build framework from autoconf to CMake
- llvm-ar now supports thin archives.
- llvm doesn t produce .data.rel.ro.local or .data.rel sections anymore.
- opional support for linking clang and the LLVM tools with a single
  libLLVM shared library

  pkgsrc note: we have this library in lang/libLLVM, but we don't currently
  use it. We may do so in the future if/when the API matures.

- The optimization to move the prologue and epilogue of functions in colder
  code path (shrink-wrapping) is now enabled by default
- new target-independent gcc-compatible emulated Thread Local Storage mode
- various target specific optimizations

Summary of significant changes in Clang:

- new compiler flags for tuning what DWARF information is included
- better strict alignment handling
- better support for __builtin_object_size
2016-03-10 15:01:52 +00:00
tnn
7b4e10c0e1 g/c obsolete comment 2016-03-08 21:11:44 +00:00
jperkin
41c43a2d5e Do not use "-z discard-unused" linker flags on SunOS, it is only supported
by the very latest Oracle Solaris release.
2016-03-07 16:27:47 +00:00