llvm-project/clang
Devin Coughlin 5df6b94381 [analyzer] ObjCGenerics: Don't warn on cast conversions involving explicit cast
The ObjCGenerics checker warns on a cast when there is no subtyping relationship
between the tracked type of the value and the destination type of the cast. It
does this even if the cast was explicitly written. This means the user can't
write an explicit cast to silence the diagnostic.

This commit treats explicit casts involving generic types as an indication from
the programmer that the Objective-C type system is not rich enough to express
the needed invariant. On explicit casts, the checker now removes any existing
information inferred about the type arguments. Further, it no longer assumes
the casted-to specialized type because the invariant the programmer specifies
in the cast may only hold at a particular program point and not later ones. This
prevents a suppressing cast from requiring a cascade of casts down the
line.

rdar://problem/33603303

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

llvm-svn: 318054
2017-11-13 17:35:29 +00:00
..
INPUTS
bindings [python] [tests] Fix test_linkage for unique external linkage 2017-11-11 20:01:41 +00:00
cmake [clang-fuzzer] Fix incremental builds of the fuzzer 2017-10-31 20:49:57 +00:00
docs [analyzer] Document the issue hash debugging facility 2017-11-13 11:13:02 +00:00
examples
include [X86] test/testn intrinsics lowering to IR. clang side 2017-11-13 12:50:52 +00:00
lib [analyzer] ObjCGenerics: Don't warn on cast conversions involving explicit cast 2017-11-13 17:35:29 +00:00
runtime Allow building libFuzzer tests in two-stage compiler-rt build. 2017-10-13 23:50:53 +00:00
test [analyzer] ObjCGenerics: Don't warn on cast conversions involving explicit cast 2017-11-13 17:35:29 +00:00
tools [clang-refactor] Introduce a new rename rule for qualified symbols 2017-11-08 08:56:56 +00:00
unittests Add ObjC exception statement AST matchers 2017-11-11 22:46:15 +00:00
utils Move the clang-tblgen project into the Clang tablegenning folder on IDEs like Visual Studio rather than leave it in the root directory. NFC. 2017-11-04 20:06:22 +00:00
www [cxx_status] Add resolution of CWG issue 1581, since it's an important, visible change. 2017-11-11 18:00:16 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Add CLANG_DEFAULT_OBJCOPY to allow Clang to use llvm-objcopy for dwarf fission 2017-11-11 01:15:41 +00:00
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt Test commit 2017-10-21 16:03:17 +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.llvm.org/mailman/listinfo/cfe-dev

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