llvm-project/clang
Hal Finkel a2347baaec Mark C++ reference parameters as dereferenceable
Because references must be initialized using some evaluated expression, they
must point to something, and a callee can assume the reference parameter is
dereferenceable. Taking advantage of a new attribute just added to LLVM, mark
them as such.

Because dereferenceability in addrspace(0) implies nonnull in the backend, we
don't need both attributes. However, we need to know the size of the object to
use the dereferenceable attribute, so for incomplete types we still emit only
nonnull.

llvm-svn: 213386
2014-07-18 15:52:10 +00:00
..
INPUTS
bindings cindex.py: remove obsolete workaround and FIXME 2014-06-22 23:28:54 +00:00
docs Fix typos 2014-07-14 19:42:55 +00:00
examples Revert "unique_ptr-ify ownership of ASTConsumers" 2014-07-17 22:34:12 +00:00
include Moved 25 flags to clang_ignored_gcc_optimization_f_Group. Will display a warning 2014-07-18 11:38:58 +00:00
lib Mark C++ reference parameters as dereferenceable 2014-07-18 15:52:10 +00:00
runtime Unify the name of compiler-rt builtins library on Linux. 2014-05-22 21:13:30 +00:00
test Mark C++ reference parameters as dereferenceable 2014-07-18 15:52:10 +00:00
tools [OPENMP] Initial parsing and sema analysis for 'taskwait' directive. 2014-07-18 10:17:07 +00:00
unittests Revert "unique_ptr-ify ownership of ASTConsumers" 2014-07-17 22:34:12 +00:00
utils Specifying the diagnostic argument through the attribute table generator instead of having to enter it manually as part of the attribute subject list. This only affects attributes appertaining to ObjC interfaces and protocols. 2014-07-16 20:28:10 +00:00
www [cxx_status] Minor wording tweaks. 2014-06-22 16:00:05 +00:00
.arcconfig Updated phabricator server. 2014-04-07 03:39:55 +00:00
.clang-format
.gitignore
CMakeLists.txt Make clang's rewrite engine a core feature 2014-07-16 16:48:33 +00:00
CODE_OWNERS.TXT Adding myself as the code owner for the attribute subsystem. 2014-01-13 22:23:27 +00:00
INSTALL.txt
LICENSE.TXT Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
Makefile Define ENABLE_CLANG_EXAMPLES instead of relying on BUILD_EXAMPLES 2014-01-08 13:00:32 +00:00
ModuleInfo.txt
NOTES.txt Remove trailing spaces 2014-07-13 17:11:45 +00:00
README.txt Remove whitespace from test commit. 2014-07-16 19:10:36 +00:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/