llvm-project/clang
Chandler Carruth 4c6fdca035 Implement a warning for known shift overflows on constant shift
expressions. Consider the code:

  int64_t i = 10 << 30;

This compiles fine, but most developers expect it to produce the value
for 10 gigs, not -2 gigs. This is actually undefined behavior because
the LHS is a signed integer type.

The warning is currently gated behind -Wshift-overflow.

There is a special case where only the sign bit is overridden that gets
a custom error message and is by default ignored. This case is much less
likely to cause observed buggy behavior, it's just undefined behavior
according to the spec. This warning can be enabled with
-Wshift-sign-overflow.

Original patch by Oleg Slezberg, with style tweaks and some correctness
fixes by me.

llvm-svn: 126342
2011-02-23 23:34:11 +00:00
..
INPUTS
bindings/python python bindings: Add support for different kind of completion chunks 2011-02-05 17:54:10 +00:00
clang.xcodeproj In the clang.xcodeproj modify the 'clang' target to do nothing, not try to build anything. 2011-02-23 00:15:56 +00:00
docs Update the www to indicate that auto is now implemented. 2011-02-23 00:41:16 +00:00
examples [analyzer] Add LangOptions in CheckerManager. 2011-02-23 07:19:14 +00:00
include Implement a warning for known shift overflows on constant shift 2011-02-23 23:34:11 +00:00
lib Implement a warning for known shift overflows on constant shift 2011-02-23 23:34:11 +00:00
runtime build/compiler-rt: Fake Clang into using the right assembler to build the ARM 2011-02-11 01:29:49 +00:00
test Implement a warning for known shift overflows on constant shift 2011-02-23 23:34:11 +00:00
tools Add null check in CursorVisitor::RunVisitorWorkList() when visiting LabelDecls. Fixes <rdar://problem/9040579>. 2011-02-23 04:54:51 +00:00
unittests Put targets on folders, if the IDE supports the feature. 2011-02-20 22:06:44 +00:00
utils Minor fix for clang-completion-mode, from Dve Abrahams 2010-12-14 16:52:29 +00:00
www Update the www to indicate that auto is now implemented. 2011-02-23 00:41:16 +00:00
CMakeLists.txt CMake: Eliminate duplicate -D__STDC_LIMIT_MACROS and -D__STDC_CONSTANT_MACROS. llvm/cmake/modules/HandleLLVMOptions.cmake defines them. 2011-02-21 03:19:49 +00:00
INSTALL.txt
LICENSE.TXT
Makefile Add gTest unittests to clang, and write the first one. 2011-02-03 04:51:52 +00:00
ModuleInfo.txt
NOTES.txt
README.txt
TODO.txt Test commit; added blank line to TODO.txt 2011-01-04 19:19:20 +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/