Go to file
Reid Kleckner 3acdc67734 [CodeView] Lower __restrict and other pointer qualifiers correctly
Qualifiers on a pointer or reference type may apply to either the
pointee or the pointer itself. Consider 'const char *' and 'char *
const'. In the first example, the pointee data may not be modified
without casts, and in the second example, the pointer may not be updated
to point to new data.

In the general case, qualifiers are applied to types with LF_MODIFIER
records, which support the usual const and volatile qualifiers as well
as the __unaligned extension qualifier.

However, LF_POINTER records, which are used for pointers, references,
and member pointers, have flags for qualifiers applying to the
*pointer*. In fact, this is the only way to represent the restrict
qualifier, which can only apply to pointers, and cannot qualify regular
data types.

This patch causes LLVM to correctly fold 'const' and 'volatile' pointer
qualifiers into the pointer record, as well as adding support for
'__restrict' qualifiers in the same place.

Based on a patch from Aaron Smith

Differential Revision: https://reviews.llvm.org/D43060

llvm-svn: 326260
2018-02-27 22:08:15 +00:00
clang [analyzer] UndefinedAssignmentChecker: Better warning message in implicit ctors. 2018-02-27 22:05:55 +00:00
clang-tools-extra add UUID to the acronyms list of objc property name checks 2018-02-27 18:35:53 +00:00
compiler-rt Disable ASan exceptions on NetBSD 2018-02-27 18:05:49 +00:00
debuginfo-tests [Darwin] Specify DWARF 2/4 when running apple accelerator tests. 2018-02-26 20:56:45 +00:00
libclc utils: Adapt to llvm r325155 2018-02-23 07:37:03 +00:00
libcxx [libcxx] [test] Fix MSVC warnings and errors. 2018-02-26 20:47:46 +00:00
libcxxabi [demangler] Support for exception specifications on function types. 2018-02-14 01:08:20 +00:00
libunwind [libunwind][MIPS]: Add support for unwinding in N32 processes. 2018-02-27 21:24:02 +00:00
lld [ELF] Add llvm-readelf to the lit tool substitutions 2018-02-27 22:01:02 +00:00
lldb [LLDB] Initial version of PPC64 InstEmulation 2018-02-27 18:42:46 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm [CodeView] Lower __restrict and other pointer qualifiers correctly 2018-02-27 22:08:15 +00:00
openmp [OMPT] Fix parallel_data in implicit barrier-end 2018-02-23 16:46:25 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly isl: "isl_schedule_get_map: handle trees with divergent filter node parameters" 2018-02-26 09:26:41 +00:00
README.md Add an svn project to contain the files that appear at the root of the 2017-10-19 21:09:49 +00:00

README.md

Low Level Virtual Machine (LLVM)

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.