./lang/clang, C language family frontend for LLVM

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 10.0.0nb4, Package name: clang-10.0.0nb4, Maintainer: pkgsrc-users

Low Level Virtual Machine (LLVM) is:

A compilation strategy designed to enable effective program optimization across
the entire lifetime of a program. LLVM supports effective optimization at
compile time, link-time (particularly interprocedural), run-time and offline
(i.e., after software is installed), while remaining transparent to developers
and maintaining compatibility with existing build scripts.

A virtual instruction set - LLVM is a low-level object code representation that
uses simple RISC-like instructions, but provides rich, language-independent,
type information and dataflow (SSA) information about operands. This combination
enables sophisticated transformations on object code, while remaining
light-weight enough to be attached to the executable. This combination is key to
allowing link-time, run-time, and offline transformations.

A compiler infrastructure - LLVM is also a collection of source code that
implements the language and compilation strategy. The primary components of the
LLVM infrastructure are the C & C++ front-end, a link-time optimization
framework with a growing set of global and interprocedural analyses and
transformations, static back-ends for the X86, X86-64, PowerPC 32/64, ARM,
Thumb, IA-64 and SPARC architectures, a back-end which emits portable C
code, and a Just-In-Time compiler for X86, X86-64, PowerPC 32/64 processors.


Required to run:
[textproc/libxml2] [lang/perl5] [lang/llvm] [lang/python37]

Required to build:
[pkgtools/cwrappers] [lang/gcc5]

Master sites:

SHA1: cfaa4c4e89a45b604e6f3057f984d73365074727
RMD160: 7a2a0b3fd1b6b0d9c59a506f99d628417a565724
Filesize: 13857.434 KB

Version history: (Expand)


CVS history: (Expand)


   2020-07-02 12:45:38 by Thomas Klausner | Files touched by this commit (2) | Package updated
Log message:
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-01 16:46:37 by Adam Ciarcinski | Files touched by this commit (10)
Log message:
clang: build with static analizer (default and needed for clang-tools-extra); \ 
remove clang-static-analyzer
   2020-06-05 17:28:54 by Jonathan Perkin | Files touched by this commit (2)
Log message:
clang: Remove patch chunk that snuck back in.
   2020-06-02 10:25:05 by Adam Ciarcinski | Files touched by this commit (1689)
Log message:
Revbump for icu
   2020-05-07 22:21:41 by Roland Illig | Files touched by this commit (2)
Log message:
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-us … 31132.html
   2020-04-26 12:19:27 by Roland Illig | Files touched by this commit (1)
Log message:
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-18 12:49:57 by Adam Ciarcinski | Files touched by this commit (1)
Log message:
clang: better PLIST
   2020-04-18 09:53:38 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
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=...")))