aboutsummaryrefslogtreecommitdiff
path: root/lib/Basic
AgeCommit message (Collapse)Author
2011-07-25Rename getDecomposedInstantiationLoc to getDecomposedExpansionLoc.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135962 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25getInstantiationLocSlowCase -> getExpansionLocSlowCaseChandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135961 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Rename SourceManager::getImmediateInstantiationRange toChandler Carruth
getImmediateExpansionRange. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135960 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Allow target to specify about using minimum alignment vs preferred. Takes ↵Chad Rosier
care of FIXME: Override "preferred align" for double and long long for ARM apcs-gnu ABI. Also part of rdar://9802874 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135940 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Rename SourceManager::getInstantiationRange to getExpansionRange.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135915 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25Mechanically rename SourceManager::getInstantiationLoc andChandler Carruth
FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part of the API and documentation update from 'instantiation' as the term for macros to 'expansion'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135914 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-23Move ArrayRef to LLVM.h and eliminate now-redundant qualifiers, patch by Jon ↵Chris Lattner
Mulder! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135855 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-23remove unneeded llvm:: namespace qualifiers on some core types now that ↵Chris Lattner
LLVM.h imports them into the clang namespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135852 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-21Define the _MIPS_SIM builtin macro on MIPS platforms. Patch by Robert Millan!Bruno Cardoso Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135675 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-19Refactor r135502 to avoid an empty if else condition, per Eric's suggestion ↵Chad Rosier
(good call!). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135510 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-19Clang asserts "Invalid environment!" when using -ccc-host-triple Chad Rosier
arch-pc-win32-macho (e.g., x86_64-pc-win32-macho), which appears to be a false positive. rdar://9786307 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135502 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-19Revamp the SourceManager to separate the representation of parsedDouglas Gregor
source locations from source locations loaded from an AST/PCH file. Previously, loading an AST/PCH file involved carefully pre-allocating space at the beginning of the source manager for the source locations and FileIDs that correspond to the prefix, and then appending the source locations/FileIDs used for parsing the remaining translation unit. This design forced us into loading PCH files early, as a prefix, whic has become a rather significant limitation. This patch splits the SourceManager space into two parts: for source location "addresses", the lower values (growing upward) are used to describe parsed code, while upper values (growing downward) are used for source locations loaded from AST/PCH files. Similarly, positive FileIDs are used to describe parsed code while negative FileIDs are used to file/macro locations loaded from AST/PCH files. As a result, we can load PCH/AST files even during parsing, making various improvemnts in the future possible, e.g., teaching #include <foo.h> to look for and load <foo.h.gch> if it happens to be already available. This patch was originally written by Sebastian Redl, then brought forward to the modern age by Jonathan Turner, and finally polished/finished by me to be committed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135484 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-14simplifyChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135170 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-14StringMap::first() is about to start returning a StringRef, adapt.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135166 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-11Disable avx feature from corei7-avx, and use -mavx for now. Right now, if ↵Bruno Cardoso Lopes
-mavx is specified, 128 avx code is used and we're not sure yet if this the behavior we want (and if it does, some improvements are needed before relying on it). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134939 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-11Enable "avx" feature, so it can be seen by llvmBruno Cardoso Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134935 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-11Apply patch from Richard Trieu to fix PR9548:Chandler Carruth
When two different types has the same text representation in the same diagnostic message, print an a.k.a. after the type if the a.k.a. gives extra information about the type. class versa_string; typedef versa_string string; namespace std {template <typename T> class vector;} using std::vector; void f(vector<string> v); namespace std { class basic_string; typedef basic_string string; template <typename T> class vector {}; void g() { vector<string> v; f(v); } } Old message: ---------------- test.cc:15:3: error: no matching function for call to 'f' f(&v); ^ test.cc:7:6: note: candidate function not viable: no known conversion from 'vector<string>' to 'vector<string>' for 1st argument void f(vector<string> v); ^ 1 error generated. New message: --------------- test.cc:15:3: error: no matching function for call to 'f' f(v); ^ test.cc:7:6: note: candidate function not viable: no known conversion from 'vector<string>' (aka 'std::vector<std::basic_string>') to 'vector<string>' (aka 'std::vector<versa_string>') for 1st argument void f(vector<string> v); ^ 1 error generated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134904 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-08Change -mno-mmx to be more compatible with gcc. Specifically, -mno-mmx ↵Eli Friedman
should not imply -mno-sse. Note that because we don't usually touch the MMX registers anyway, all -mno-mmx needs to do is tweak the x86-32 calling convention a little for vectors that look like MMX vectors, and prevent the definition of __MMX__. clang doesn't actually stop the user from using MMX inline asm operands or MMX builtins in -mno-mmx mode; as a QOI issue, it would be nice to diagnose, but I doubt it really matters much. <rdar://problem/9694837> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134770 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-08Fix a FIXME in clang ARM driver that was exposed as a bug with ARM backendEvan Cheng
change. Previously clang was passing the following feature strings to the ARM backend when CPU is cortex-a8: +neon,-vfp2,-vfp3 This used to work because -vfp2,-vfp3 had no effect after +neon. Now that the features are controlled by individual bits (with implied hierarchy), the net effect is all three features will be turned off. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134691 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07Keep track of which source locations are part of a macro argumentChandler Carruth
instantiation and improve diagnostics which are stem from macro arguments to trace the argument itself back through the layers of macro expansion. This requires some tricky handling of the source locations, as the argument appears to be expanded in the opposite direction from the surrounding macro. This patch provides helper routines that encapsulate the logic and explain the reasoning behind how we step through macros during diagnostic printing. This fixes the rest of the test cases originially in PR9279, and later split out into PR10214 and PR10215. There is still some more work we can do here to improve the macro backtrace, but those will follow as separate patches. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134660 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07Fix a typo in the fpsr register and add the fpcr register.Eric Christopher
Fixes PR10299 and rdar://9740322 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134654 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07Move SourceManager::isAt[Start/End]OfMacroInstantiation functions to the ↵Argyrios Kyrtzidis
Lexer, since they depend on it now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134644 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07FreeBSD gets FreeBSD target, just mipsel.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134619 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07Make the Preprocessor more memory efficient and improve macro instantiation ↵Argyrios Kyrtzidis
diagnostics. When a macro instantiation occurs, reserve a SLocEntry chunk with length the full length of the macro definition source. Set the spelling location of this chunk to point to the start of the macro definition and any tokens that are lexed directly from the macro definition will get a location from this chunk with the appropriate offset. For any tokens that come from argument expansion, '##' paste operator, etc. have their instantiation location point at the appropriate place in the instantiated macro definition (the argument identifier and the '##' token respectively). This improves macro instantiation diagnostics: Before: t.c:5:9: error: invalid operands to binary expression ('struct S' and 'int') int y = M(/); ^~~~ t.c:5:11: note: instantiated from: int y = M(/); ^ After: t.c:5:9: error: invalid operands to binary expression ('struct S' and 'int') int y = M(/); ^~~~ t.c:3:20: note: instantiated from: \#define M(op) (foo op 3); ~~~ ^ ~ t.c:5:11: note: instantiated from: int y = M(/); ^ The memory savings for a candidate boost library that abuses the preprocessor are: - 32% less SLocEntries (37M -> 25M) - 30% reduction in PCH file size (900M -> 635M) - 50% reduction in memory usage for the SLocEntry table (1.6G -> 800M) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134587 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07Fix bug in SourceManager::getDecomposedInstantiationLocSlowCase.Argyrios Kyrtzidis
It would add up relative (decomposed) offsets like in getDecomposedSpellingLocSlowCase, but while it makes sense to preserve the offset among lexed spelling locations, it doesn't make sense to add anything to the offset of the instantiation location. The instantiation location will be the same regardless of the relative offset in the tokens that were instantiated. This bug didn't actually affect anything because, currently, in practice we never create macro locations with relative offset greater than 0. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134586 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-07For -print-stats, add the number of bytes that SLocEntryTable consumes.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134585 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06Keep track of when "unrecoverable" errors occur, then allowDouglas Gregor
clang_saveTranslationUnit() to save a PCH file if the only errors it contains are recoverable errors. Fixes <rdar://problem/9727804>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134503 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06SmallVectorize a critical vector.Benjamin Kramer
The small number of elements was determined by taking the median file length in clang+llvm and /usr/include on OS X with xcode installed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134496 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-06Fix C&P errorJoerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134490 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05objc-arc: enforce performSelector rules in rejecting retaining selectorsFariborz Jahanian
passed to it, and unknown selectors causing potential leak. // rdar://9659270 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134449 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05Remove unused member of Builtin::Info.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134443 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05Hook up mipsel-netbsd and mipsel-freebsd for OS specific handling.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134425 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05Use OS-specific configuration for mips-netbsd and mips-freebsd.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134422 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05Don't define _BIG_ENDIAN for NetBSD/PowerPC.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134411 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-05Fix indentationJoerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134410 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-04Add explicit default case for -Wswitch-enum.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134399 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-04Use switch(os) style consistently. Add a bunch of NetBSD branches.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134393 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-04On PowerPC, both FreeBSD and NetBSD use ints for (s)size_tJoerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134392 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-02Update for llvm commit r134291.Eric Christopher
Fixes rdar://9714064 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134292 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-01Add initial *-*-rtems* target, from Joel SherrillDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134283 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-29Use preferred 64-bit alignment for i64 & f64 for Thumb targets. Radar 9695134.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134070 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-28Split out logic for valid clobbers and valid inline asm registers.Eric Christopher
Fixes rdar://9281377 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134016 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-24SourceManager::isAtStartOfMacroInstantiation should check not only if the ↵Argyrios Kyrtzidis
location is at the first token but that the location's offset is not inside the token as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133800 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21Make more use of llvm::StringRef in various APIs. In particular, don'tJay Foad
use the deprecated forms of llvm::StringMap::GetOrCreateValue(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133515 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-21Move additional register names to their own lookup, separate fromEric Christopher
register aliases. Fixes unnecessary renames of clobbers. Fixes part of rdar://9425559 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133485 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-17As a hopefully temporary workaround for a header mistake, treatJohn McCall
__bridge_retain as a synonym for __bridge_retained. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133295 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-17Add some more memory constraints for ARM.Eric Christopher
Part of rdar://9197685 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133225 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-17On ARM make sure that we continue translating 'p' to 'r' for theEric Christopher
constraints. rdar://9618597 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133222 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-16Stylistic fix: move virtual keyword before return type.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133181 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-16Unconditionally #define the ARC ownership qualifiers, instead of #definingJohn McCall
them only on Darwin tool chains. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133112 91177308-0d34-0410-b5e6-96231b3b80d8