aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2011-12-12Implement the Microsoft __if_exists/if_not_exists extension in initializer-list.Francois Pichet
Necessary to parse Microsoft ATL code. Example: int array[] = { 0, __if_exists(CLASS::Type) {2, } 3 }; will declare an array of 2 or 3 elements depending on if CLASS::Type exists or not. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146447 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Tweak submodule ID handling in the AST writerDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146445 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12objc-arc: better diagnostic when block is declaredFariborz Jahanian
inside a struct/union. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146444 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Make CGRecordLayoutBuilder correctly switch over to a packed class when a ↵Eli Friedman
class has a base whose alignment will break the class layout. <rdar://problem/10551376>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146443 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Add frontend flags to enable bitcode verifier pass.Chad Rosier
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146441 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Suppress -Warray-bounds in certain cases involving macros from system headers.Matt Beaumont-Gay
The motivation here is a "clever" implementation of strncmp(), which peels the first few comparisons via chained conditional expressions which ensure that the input arrays are known at compile time to be sufficiently large. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146430 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Fixes a bug in calculation of field offsets of ms_structFariborz Jahanian
fields by just following what comment says. // rdar://10513599 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146414 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Hexagon backend supportTony Linthicum
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146413 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12When we have an umbrella directory in a module map, recursively walkDouglas Gregor
the subdirectories to find headers in submodules. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146398 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Clean up diagnostic wording for disallowed casts in C++11 constant expressions.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146395 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Don't mark include guard macros as implicitly private. This isn'tDouglas Gregor
actually a terribly good heuristic, and the world is too horrible for it to work. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146393 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Implement C++11 constant expression cast restrictions.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146371 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Fix some not-yet-used diagnostic code in a template, which gcc spotted and clangRichard Smith
did not! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146366 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Prepare constant expression infrastructure for the generation of richerRichard Smith
diagnostics. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146365 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Update Clang to emit the new form of llvm.cttz and llvm.ctlz intrinsics,Chandler Carruth
setting the is_zero_undef flag appropriately to true as that matches the semantics of these GCC builtins. This is the Clang side of r146357 in LLVM. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146358 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12Fix/test decltype dtor calls with invalid base expression.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146354 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-11[analyzer] CStringChecker should not rely on the analyzer generating ↵Anna Zaks
UndefOrUnknown value when it cannot reason about the expression. We are now often generating expressions even if the solver is not known to be able to simplify it. This is another cleanup of the existing code, where the rest of the analyzer and checkers should not base their logic on knowing ahead of the time what the solver can reason about. In this case, CStringChecker is performing a check for overflow of 'left+right' operation. The overflow can be checked with either 'maxVal-left' or 'maxVal-right'. Previously, the decision was based on whether the expresion evaluated to undef or not. With this patch, we check if one of the arguments is a constant, in which case we know that 'maxVal-const' is easily simplified. (Another option is to use canReasonAbout() method of the solver here, however, it's currently is protected.) This patch also contains 2 small bug fixes: - swap the order of operators inside SValBuilder::makeGenericVal. - handle a case when AddeVal is unknown in GenericTaintChecker::getPointedToSymbol. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146343 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-11Reuse forAddr to create ignored AggValueSlots.Benjamin Kramer
Silences valgrind warnings about uninitalized alignment values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146342 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10[analyzer]Fixup r146336.Anna Zaks
Forgot to commit the Header files. Rename generateUnknownVal -> makeGenericVal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146337 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10[analyzer] Introduce IntSymExpr, where the integer is on the lhs.Anna Zaks
Fix a bug in SimpleSValBuilder, where we should swap lhs and rhs when calling generateUnknownVal(), - the function which creates symbolic expressions when data is tainted. The issue is not visible when we only create the expressions for taint since all expressions are commutative from taint perspective. Refactor SymExpr::symbol_iterator::expand() to use a switch instead of a chain of ifs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146336 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10Check that arguments to a scanf call match the format specifier,Hans Wennborg
and offer fixits when there is a mismatch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146326 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10In ContentCache::replaceBuffer, add sanity check to make sure that we do not ↵Argyrios Kyrtzidis
free a buffer and then continue using it. rdar://10359140. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146308 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10Make sure that we infer __strong, etc. when we instantiate variablesDouglas Gregor
under ARC. Fixes <rdar://problem/10530209>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146307 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10Add a fast path to the constant evaluator for integer literals. This speeds upRichard Smith
compilation of some translation units of SPEC's 445.gobmk by ~4%, and does not seem to cause a measurable slowdown in other cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146306 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10Add a sanity check in SourceManager::getColumnNumber, make sureArgyrios Kyrtzidis
we don't try to access beyond the buffer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146305 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10Add ability to supply additional message to availability macros,Fariborz Jahanian
// rdar://10095131 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146304 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10When we manage to re-use an expression during tree transformation (=Douglas Gregor
template instantiation), and that expression might produce a temporary, invoke MaybeBindToTemporary. Otherwise, we forget to destroy objects, release objects, etc. Fixes <rdar://problem/10531073>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146301 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Driver: Handle -f{no-}honor-infinities, -f{no-}honor-nans, andDaniel Dunbar
-ffinite-math-only. - No test case yet, I don't know how to construct a situation where this matters. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146297 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Make array new on a pointer to data member type work correctly. PR11523.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146291 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09C++11 constant expressions: Don't use CheckICE in C++11; instead, determineRichard Smith
whether an expression is a (core) constant expression as a side-effect of evaluation. This takes us from accepting far too few expressions as ICEs to accepting slightly too many -- fixes for the remaining cases are coming next. The diagnostics produced when an expression is found to be non-constant are currently quite poor (with generic wording but reasonable source locations), and will be improved in subsequent commits. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146289 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Add notes for suppressing and (if it's a zero-arg function returning bool) ↵David Blaikie
fixing the function-to-bool conversion warning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146280 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09objc-arc: diagnose synthesis of a 'weak unavailable' property.Fariborz Jahanian
// rdar://10535245 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146272 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Provide a separate warning for weak vtables in explicit template ↵David Blaikie
instantiations. There's no (current) way to fix such templates to emit strong symbols/vtables, but perhaps users want to know about the cost being incurred anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146265 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09When performing subframework header lookup, don't search forDouglas Gregor
".framework/" in the path name, because it could be ".framework\" on Windows. This whole function needs to be rewritten with PathV2. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146261 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Use llvm::sys::fs::equivalent rather than comparing inodes, becauseDouglas Gregor
comparing inodes doesn't actually work on Windows. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146260 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Remove unnecessary braces from my previous commit.Hans Wennborg
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146259 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Make printf warnings refer to wint_t and wchar_t by nameHans Wennborg
in addition to underlying type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146254 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Move definition of ConversionSpecifier::toString() to FormatString.cppHans Wennborg
It's declared in FormatString.h, so it shouldn't be defined in PrintfFormatString.cpp. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146253 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09fix format specifier fixit for printf("%ld", "foo");Hans Wennborg
It should reset the length modifier (unless it's a wchar_t string). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146252 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Fix a blatant typo or cut/paste-o reported by users of this header.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146251 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Teach isConstantInitializer that numeric literals are constants, rather thanRichard Smith
having it evaluate them. No change in functionality, but a speed up of about 5% on some translation units in SPEC 445.gobmk. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146248 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Fix the --hash-style option when the target is MIPS as it isChandler Carruth
incompatible with the MIPS ABI. Patch by Simon Atanasyan. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146243 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09[analyzer] Fix inconsistency on when SValBuilder assumes that 2Anna Zaks
types are equivalent. + A taint test which tests bitwise operations and which was triggering an assertion due to presence of the integer to integer cast. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146240 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09In ExprEvaluatorBase::VisitOpaqueValueExpr() add a sanity check to avoidArgyrios Kyrtzidis
infinite recursion due to bad OpaqueValueExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146237 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Replace the implementation of __builtin_constant_p (which was based on the GCCRichard Smith
documentation) with one based on what GCC's __builtin_constant_p is actually intended to do (discovered by asking a friendly GCC developer). In particular, an expression which folds to a pointer is now only considered to be a "constant" by this builtin if it refers to the first character in a string literal. This fixes a rather subtle wrong-code issue when building with glibc. Given: const char cs[4] = "abcd"; int f(const char *p) { return strncmp(p, cs, 4); } ... the macro magic for strncmp produces a (potentially crashing) call to strlen(cs), because it expands to an expression starting with: __builtin_constant_p(cs) && strlen(cs) < 4 ? /* ... */ Under the secret true meaning of __builtin_constant_p, this is guaranteed to be safe! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146236 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Implement the notion of umbrella directories, which implicity coverDouglas Gregor
all of the headers below that particular directory. Use umbrella directories as a clean way to deal with (1) directories/frameworks that don't have an umbrella header, but don't want to enumerate all of their headers, and (2) PrivateHeaders, which we never want to enumerate and want to keep separate from the main umbrella header. This also eliminates a little more of the "magic" for private headers, and frameworks in general. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146235 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Move ChainedIncludesSource into the Frontend library. This never reallyChandler Carruth
belonged in the Serialization library, it's setting up a compilation, not just deserializing. This should fix PR11512, making Serialization actually be layered below Frontend, a long standing layering violation in Clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146233 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Clean up the comments for this file now that its contents are totallyChandler Carruth
different from what the comments indicated. Also drop a no longer used include that also violates the layering between Serialization and Frontend. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146230 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Move a free function from the Frontend library into the Lex library asChandler Carruth
part of HeaderSearch. This function just normalizes filenames for use inside of a synthetic include directive, but it is used in both the Frontend and Serialization libraries so it needs a common home. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146227 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09deprecated enum should not warn when used initializing another deprecated ↵Fariborz Jahanian
enumerator. // rdar://10535640 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146218 91177308-0d34-0410-b5e6-96231b3b80d8