aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-12-19Optimize serialized representation of redeclarable declarations forDouglas Gregor
which there are no redeclarations. This reduced by size of the PCH file for Cocoa.h by ~650k: ~536k of that was in the new LOCAL_REDECLARATIONS table, which went from a ridiculous 540k down to an acceptable 3.5k, while the rest was due to the more compact abbreviated representation of redeclarable declaration kinds (which no longer need to store the 'first' declaration ID). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146869 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19Make sure this test works in C++, tooDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146868 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19Extend the fix for PR9614 to handle inline asm in the outer decl andRafael Espindola
the inner decl being a builtin. This is needed to support the glibc headers in fedora 16 (2.14). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146867 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19Combine common (de-)serialization logic for typedefs and type aliasesDouglas Gregor
into operations on TypedefNameDecl. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146866 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19Add AVX2 intrinsics for and, andn, or, and xor.Craig Topper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146862 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19SourceManager: use getBufferSize()Dylan Noblesmith
Forming an out of bounds pointer to check if it's out of bounds was undefined behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146861 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19fix a broken linkChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146859 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19More AVX2 intrinsic support including saturating add/sub and palignr.Craig Topper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146857 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19constexpr handling improvements. Produce detailed diagnostics when a 'constexpr'Richard Smith
variable is initialized by a non-constant expression, and pass in the variable being declared so that earlier-initialized fields' values can be used. Rearrange VarDecl init evaluation to make this possible, and in so doing fix a long-standing issue in our C++ constant expression handling, where we would mishandle cases like: extern const int a; const int n = a; const int a = 5; int arr[n]; Here, n is not initialized by a constant expression, so can't be used in an ICE, even though the initialization expression would be an ICE if it appeared later in the TU. This requires computing whether the initializer is an ICE eagerly, and saving that information in PCH files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146856 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19Begin adding AVX2 intrinsics. Necessitated increasing the number of bits ↵Craig Topper
used to store builtinID when serializing identifier table. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146855 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-18test/Analysis: fix error messageDylan Noblesmith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146848 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-18Silence gcc warnings.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146847 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-18examples: flesh out PFN readmeDylan Noblesmith
Show how to actually use the arguments it has. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146845 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-18PR11604: don't allow floating-literal-to-integer casts in ICEs if the ↵Richard Smith
(truncated) floating literal value does not fit into the destination type. Such casts have undefined behavior at translation time; treating them as non-ICE matches the behavior of modern gcc versions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146842 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Completely re-implement (de-)serialization of declarationDouglas Gregor
chains. The previous implementation relied heavily on the declaration chain being stored as a (circular) linked list on disk, as it is in memory. However, when deserializing from multiple modules, the different chains could get mixed up, leading to broken declaration chains. The new solution keeps track of the first and last declarations in the chain for each module file. When we load a declaration, we search all of the module files for redeclarations of that declaration, then splice together all of the lists into a coherent whole (along with any redeclarations that were actually parsed). As a drive-by fix, (de-)serialize the redeclaration chains of TypedefNameDecls, which had somehow gotten missed previously. Add a test of this serialization. This new scheme creates a redeclaration table that is fairly large in the PCH file (on the order of 400k for Cocoa.h's 12MB PCH file). The table is mmap'd in and searched via a binary search, but it's still quite large. A future tweak will eliminate entries for declarations that have no redeclarations anywhere, and should drastically reduce the size of this table. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146841 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Split the Windows toolchain definition into its own file. This isChandler Carruth
especially nice as the Windows toolchain needs the windows header files, and has lots of platform specific hooks in it. To facilitate the split, hoist a bunch of file-level static helpers into class-level static helpers. Spiff up their doxygen comments while there as they're now more likely to be looked up via docs. Hopefully, this will be followed by further breaking apart of the toolchain definitions. Most of the large and complex ones should likely live on their own. I'm looking at you Darwin. ;] git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146840 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Fix an abiguous-else warning from GCC. I have no idea why Clang doesn'tChandler Carruth
have this warning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146839 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Teach the link-step test to verify that we don't pass bad --hash-styleChandler Carruth
flags on MIPS paltforms. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146837 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Update CMake dependencies.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146836 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Add -mavx2 and -mno-avx2 command line support. Also add core-avx2 processor ↵Craig Topper
type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146835 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Frontend/VerifyDiagnosticConsumer.cpp: Fix an expression that had side-effect.NAKAMURA Takumi
It had been causing test "Misc/diag-verify.cpp" failure on ms cl.exe. The emission was ordered unexpectedly as below; First) error: 'error' diagnostics seen but not expected: Second) error: 'error' diagnostics expected but not seen: git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146830 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17[PCH] Remove extraneous line in the test that was mistakenly copied.Argyrios Kyrtzidis
No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146825 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17[PCH] Don't deserialize bodies of interesting decls while iteratingArgyrios Kyrtzidis
over them because more interesting decls can be added during body deserialization. Should fix msvc build tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146824 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Refactor SerializeDiagnosticsPrinter to using DiagnosticRenderer. This ↵Ted Kremenek
gives us comparative diagnostics to TextDiagnosticPrinter. This certainly can be cleaned up a bit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146820 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Refactor 'TextDiagnostic' to have a parent class 'DiagnosticRenderer' which ↵Ted Kremenek
handles the policy of how diagnostics are lowered/rendered, while TextDiagnostic handles the actual pretty-printing. This is a first part of reworking SerializedDiagnosticPrinter to use the same inclusion-stack/macro-expansion logic as TextDiagnostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146819 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17[PCH] Fix bug where we failed to update an identifier for a single tokenArgyrios Kyrtzidis
macro expansion. rdar://10588825 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146818 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17[PCH] In ASTReader::FinishedDeserializing fully load the interesting decls,Argyrios Kyrtzidis
including deserializing their bodies, so that any other declarations that get referenced in the body will be fully deserialized by the time we pass them to the consumer. Could not reduce to a test case unfortunately. rdar://10587158. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146817 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Add a sanity check in the Redeclarable::redecl_iterator to avoid infinite loopArgyrios Kyrtzidis
when we formed an invalid redeclaration chain due to a bug. Thanks to Doug for the hint! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146816 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17In Parser::SkipUntil do not stop at '@' unconditionally.Argyrios Kyrtzidis
Stopping at '@' was originally intended to avoid skipping an '@' at the @interface context when doing parser recovery, but we should not stop at all '@' tokens because they may be part of expressions (e.g. in @"string", @selector(), etc.), so in most cases we will want to skip them. This commit caused 'test/Parser/method-def-in-class.m' to fail for the cases where we tried to recover from unmatched angle bracket but IMO it is not a big deal to not have good recovery from such broken code and the way we did recovery would not always work anyway (e.g. if there was '@' in an expression). The case that rdar://7029784 is about still passes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146815 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17After late parsing an objc method, make sure there are no leftover cached ↵Argyrios Kyrtzidis
tokens, because the memory associated with them is going to get released. We also don't want them to affect later parsing. (We do the same for C++ inline methods.) The underlying cause for the leftover tokens is going to be addressed in the next commit. Couldn't get a test case for the crash though. rdar://10583033. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146814 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Add a missing check before trying to evaluate a temporary. PR11595.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146813 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Fix _mm_permute_ps and _mm256_permute_ps AVX intrinsics to use "I" (ICE)Chad Rosier
markings. Fix avxintrin.h to take them into account. Part of rdar://10595450 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146810 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Revert r146797, which was a partial revert of r146791; It was correct in theChad Rosier
first place. The permutevar_* (note the *var*) intrinsics use ymm/mem. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146807 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Fix _mm256_extractf128_* AVX intrinsics to use "I" (ICE) markings. FixChad Rosier
avxintrin.h to take them into account. Part of rdar://10595450 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146804 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Partial revert of r146791; vpermilps/vpermilpd instructions accepts ↵Chad Rosier
ymm/mem/imm8. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146797 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Remove a non-gcc-compatible extension that would apply attributes on ↵Eli Friedman
declarations without a declarator to structs. Add a warning for ignored attributes. Patch by Michael Han. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146796 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Add a triple to this test to hopefully get it passing on i386-freebsd.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146795 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17[analyzer] Fixup for r146793. Add tests for atol and atoll.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146794 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17[analyzer] Add support for taint flowing through a function (atoi).Anna Zaks
Check if the input parameters are tainted (or point to tainted data) on a checkPreStmt<CallExpr>. If the output should be tainted, record it in the state. On post visit (checkPostStmt<CallExpr>), use the state to make decisions (in addition to the existing logic). Use this logic for atoi and fscanf. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146793 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17[analyzer] Minor: Simplify & assert.Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146792 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17Fix _mm256_round_pd, _mm256_round_ps, _mm_permute_pd and _mm256_permute_pd AVXChad Rosier
intrinsics to use "I" (ICE) markings. Fix avxintrin.h to take them into account. Part of rdar://10595450 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146791 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16When in a limited debug information situation if we can find the originalEric Christopher
declaration for the type then go ahead and use that, it's still smaller than creating an all new derived type. Part of rdar://10335756 and others. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146779 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Start down the path of getting clang to internally agree on structs versusEric Christopher
classes. Part of rdar://10520586 and a couple others. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146778 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Fix an inconsistency in the syntactic form of InitListExpr in case of ↵Nicola Gigante
initialization that involves a ConstructorConversion git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146766 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Don't allow #include (and its friends #import, #include_next andRichard Smith
#__include_macros) in the arguments of a function-style macro. Directives in the arguments of such macros have undefined behaviour, and GCC does not correctly support these cases. In some situations, this can lead to better diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146765 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Add missing header changeDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146764 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Make sure we're always setting the previous declaration of an ObjCInterfaceDeclDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146763 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Add the value of "suitably aligned" from the C++11 standard to Basic/TargetInfo.Nick Lewycky
This is equal to alignof(std::max_align_t) on the platform and equal to the alignment provided by malloc. (Platform owners please double-check your platform's value.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146762 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Fix 80-column violation and whitespace. No functionality change.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146761 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16Add missing flush call. This is an attempt to fix a broken Windows buildbot.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146760 91177308-0d34-0410-b5e6-96231b3b80d8