Old fork of llvm-mirror, used on older RPCS3 builds
Go to file
Duncan P. N. Exon Smith 84cb8974bd ADT: Require explicit ilist iterator/pointer conversions
Disallow implicit conversions between ilist iterators and element
points.  Explicit conversions still work of course.

This is the first step toward removing the undefined behaviour in
`ilist` and `iplist`:
http://lists.llvm.org/pipermail/llvm-dev/2015-October/091115.html

The motivation for removing the implicit iterators is that I came across
real bugs (that were *really* getting lucky).  More details and some
brief discussion later in that thread:
http://lists.llvm.org/pipermail/llvm-dev/2015-October/091617.html

Note: if you have out-of-tree code, it should be fairly easy to revert
this patch downstream while you update your out-of-tree call sites.
Note that these conversions are occasionally latent bugs (that may
happen to "work" now, but only because of getting lucky with UB;
follow-ups will change your luck).  When they are valid, I suggest using
`->getIterator()` to go from pointer to iterator, and `&*` to go from
iterator to pointer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252372 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-07 00:02:32 +00:00
autoconf Don't use bashism/kshism of test ==. From Kamil Rytarowski. 2015-09-12 16:30:32 +00:00
bindings DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
cmake [CMake] Bug 25059 - CMake libllvm.so.$MAJOR.$MINOR shared object name not compatible with ldconfig 2015-11-04 23:11:12 +00:00
docs Add 'notail' marker for call instructions. 2015-11-06 23:55:38 +00:00
examples Fix Kaleidoscope example. 2015-11-05 22:18:31 +00:00
include ADT: Require explicit ilist iterator/pointer conversions 2015-11-07 00:02:32 +00:00
lib ADT: Remove last implicit ilist iterator conversions, NFC 2015-11-07 00:01:16 +00:00
projects [CMake] Disable adding the test suite as a projects subdirectory 2015-10-28 18:36:56 +00:00
resources In MSVC builds embed a VERSIONINFO resource in our exe and DLL files. 2015-06-12 15:58:29 +00:00
test [InstCombine] Don't insert an instruction after a terminator 2015-11-06 23:59:23 +00:00
tools ADT: Remove last implicit ilist iterator conversions, NFC 2015-11-07 00:01:16 +00:00
unittests Revert r252366: [Support] Use GetTempDir to get the temporary dir path on Windows. 2015-11-06 23:44:23 +00:00
utils Fix some Clang-tidy modernize warnings, other minor fixes. 2015-11-04 22:32:32 +00:00
.arcconfig Updated phabricator server. 2014-04-07 03:57:04 +00:00
.clang-format Test commit. 2014-03-02 13:08:46 +00:00
.clang-tidy Enable display of compiler diagnostics in clang-tidy by default. 2014-10-29 17:29:38 +00:00
.gitignore Minor updates to gitignore so that symlinks are ignored in the projects dir. 2015-07-07 20:24:58 +00:00
CMakeLists.txt Relax the check for ninja. 2015-11-04 19:18:11 +00:00
CODE_OWNERS.TXT Add myself as the the code owner for the AVR backend 2015-10-28 00:24:54 +00:00
configure Don't use bashism/kshism of test ==. From Kamil Rytarowski. 2015-09-12 16:30:32 +00:00
CREDITS.TXT [WebAssembly] Initial WebAssembly backend 2015-06-29 23:51:55 +00:00
LICENSE.TXT Update for a new year. 2015-03-12 01:25:29 +00:00
llvm.spec.in [Sparc] Implement i64 load/store support for 32-bit sparc. 2015-08-10 19:11:39 +00:00
LLVMBuild.txt Remove the very substantial, largely unmaintained legacy PGO 2013-10-02 15:42:23 +00:00
Makefile [configure/make] Propagate names of build host tools when making BuildTools 2014-03-25 21:45:41 +00:00
Makefile.common Makefile.common: Update a description, s/Source/SOURCES/ , according to MakefileGuide.html#control-variables . 2012-12-07 01:43:23 +00:00
Makefile.config.in We're actually -Wmissing-field-initializers clean thanks to the cmake 2015-08-07 16:44:47 +00:00
Makefile.rules We're actually -Wmissing-field-initializers clean thanks to the cmake 2015-08-07 16:44:47 +00:00
README.txt Revert test commit at revision 233535. 2015-03-30 12:39:03 +00:00

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.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.