aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2011-11-06[arcmt] Collect all the places where GC attributes __strong/__weak occur.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143883 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06[arcmt] Refactor PropertiesRewriter to use MigrationContext.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143882 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06The version objects need to actually store the version strings; theyChandler Carruth
aren't guaranteed to live long enough otherwise. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143875 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Throw the switch and move all Linux header search over to the GCCChandler Carruth
detection system that is providing the library paths and crt object files. This, modulo any bugs that need to be shaken out, resolves numerous bugs with how we handle header paths. Here are a few that I know of: - We no longer need to enumerate all GCC versions searched. - OpenSUSE searched GCC versions in the wrong order. - There were typos when selecting various patterns, etc. - We aren't stating quite some many directories now. - SysRoot didn't always work in a reasonable way. I'm working on tests for this, but the tests are making me and Lit sad. The real testing for this type of driver change is to try it out on various distributions. I'll hit the common ones right away, and start more thorough testing tomorrow after some sleep. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143874 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Add a missing triple spotted by inspecting and testing of the includeChandler Carruth
path triples. Also order the 32-bit triples a bit more reasonably. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143873 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Unbreak gcc build.Benjamin Kramer
For some reason clang and msvc accept this, but gcc doesn't. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143872 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Lift the GCCVersion type into the header file and start persisting it inChandler Carruth
the detected GCC installation. This allows us to expose another aspect of what we detected: the GCC version. This will be used shortly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143871 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Make format string 64 bit safe.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143870 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Switch some of these interfaces from std::string to StringRef and Twine.Chandler Carruth
This will facilitate further use and recombinations of them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143869 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Change the AST representation of operations on Objective-CJohn McCall
property references to use a new PseudoObjectExpr expression which pairs a syntactic form of the expression with a set of semantic expressions implementing it. This should significantly reduce the complexity required elsewhere in the compiler to deal with these kinds of expressions (e.g. IR generation's special l-value kind, the static analyzer's Message abstraction), at the lower cost of specifically dealing with the odd AST structure of these expressions. It should also greatly simplify efforts to implement similar language features in the future, most notably Managed C++'s properties and indexed properties. Most of the effort here is in dealing with the various clients of the AST. I've gone ahead and simplified the ObjC rewriter's use of properties; other clients, like IR-gen and the static analyzer, have all the old complexity *and* all the new complexity, at least temporarily. Many thanks to Ted for writing and advising on the necessary changes to the static analyzer. I've xfailed a small diagnostics regression in the static analyzer at Ted's request. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143867 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Take a better approach to detecting and selecting multiarch includeChandler Carruth
directories. This way we stop at the first multiarch directory found on the system. This achieves the real intended result of pruning non-existent directories. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143866 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Revert r143864, as the problem I was actually looking at can be solvedChandler Carruth
a better way. The more I think about it the more worried I am that this hammer is simply too large. We should only be reaching out to the filesystem when doing interesting "detection" things, not gratuitously. Original commit message: Start pruning down the set of flags passed to CC1 for header search. This cleans up the CC1 invocations, and reduces the overhead there. We're still hammering the filesystem looking for the C++ standard libraries though. The only reservation I have about this policy is the case of virtualized files inside of CC1, but it's not clear what the best way to solve that is. The Driver consistently queries the actual filesystem to make its decisions. Changing that would be a very large undertaking. It might be worthwhile, but it's not an immediate goal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143865 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Start pruning down the set of flags passed to CC1 for header search.Chandler Carruth
This cleans up the CC1 invocations, and reduces the overhead there. We're still hammering the filesystem looking for the C++ standard libraries though. The only reservation I have about this policy is the case of virtualized files inside of CC1, but it's not clear what the best way to solve that is. The Driver consistently queries the actual filesystem to make its decisions. Changing that would be a very large undertaking. It might be worthwhile, but it's not an immediate goal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143864 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Fixing -g break caused by a dead reference to a temporary introduced in r143732.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143856 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-06Add the depfile as a result file so that it is deleted if we crash,Peter Collingbourne
and prevent the diagnostic preprocessor run from writing a depfile. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143846 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Enhance the GCC version parsing and comparison logic to handle some moreChandler Carruth
edge cases and have better behavior. Specifically, we should actually prefer the general '4.6' version string over the '4.6.1' string, as '4.6.2' should be able to replace it without breaking rpaths or any other place that these paths have been embedded. Debian-based distributions are already using a path structure with symlinks to achieve in-place upgrades for patch versions. Now our parsing reflects this and we select the shorter paths instead of the longer paths. A separate issue was that we would not parse a leading patch version number even in the presence of a suffix. The above change makes this more problematic as it would cause a suffix being added to make us treat the entire thing as patch-version-agnostic, which it isn't. This changes the logic to distinguish between '4.4.x' and 4.4.1-x', and retain that the latter has *some* patch number information. Currently, we always bias toward the shorter and more canonical version strings. If it becomes important we can add more Debian like rules to produce sequences such as '4.4.1b' > '4.4.1' > '4.4.1-rc3' > '4.4.1-rc2' > '4.4.1-pre5', but I'm very doubtful this will ever matter or be desirable. I've made the tests for this logic a bit more interesting, and added some specific tests for logic that is now different. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143841 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Remove a pointless member. I have no idea why I made this not a localChandler Carruth
variable to begin with... As I'm planning to add include root information to this object, this would have caused confusion. It didn't even *actually* hold the include root by the time we were done with it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143840 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Remove a no-longer needed helper function. Thanks for implementing thisChandler Carruth
Michael! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143839 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Move the GCC installation detection helper a member of the LinuxChandler Carruth
toolchain instead of merely using it in the constructor. This will allow us to query it when building include paths as well as the file search paths built in the constructor. I've lifted as little of it as I could into the header file. Eventually this will likely sink down into some of the Generic toolchains and be used on more platforms, but I'm starting on Linux so I can work out all the APIs needed there, where it is easiest to test and we have the most pressing need. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143838 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Remove support for Gentoo subversion-ebuild installed llvm-gcc libstdc++Chandler Carruth
headers. As llvm-gcc is dead, and I have no idea if this ever really worked, I think it's time for it to go. More importantly, it makes it harder to generalize the include search logic. If someone really wants these to work, they can set the CPLUS_INCLUDE_PATH environment variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143836 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Move the Linux header searching from the Frontend to the Driver. This isChandler Carruth
the first (and diff-noisiest) step to making Linux header searching tremendously more principled and less brittle. Note that this step should have essentially no functional impact. We still search the exact same set of paths in the exact same order. The only change here is where the code implementing such a search lives. This has one obvious negative impact -- we now pass a ludicrous number of flags to the CC1 layer. That should go away as I re-base this logic on the logic to detect a GCC installation. I want to do this in two phases so the bots can tell me if this step alone breaks something, and so that the diffs of the refactoring make more sense. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143822 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Try to reduce the nastiness that creeps in through Windows.h a bit.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143816 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05[driver] If we're only linking, don't warn about unused arguments which areChad Rosier
obviously only used during compilation. rdar://10386708 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143813 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Fix a significant oversight in my move of MSVC includes to the driver:Chandler Carruth
actually manage the builtin header file includes as well as the system ones. This one is actually debatable whether it belongs in the driver or not, as the builtin includes are really an internal bit of implementation goop for Clang. However, they must be included at *exactly* the right point in the sequence of header files, which makes it essentially impossible to have this be managed by the Frontend and the rest by the Driver. I have terrible ideas that would "work", but I think they're worse than putting this in the driver and making the Frontend library even more ignorant of the environment and system on which it is being run. Also fix the fact that we weren't properly respecting the flags which suppress standard system include directories. Note that this still leaves all of the Clang tests which run CC1 directly and include builtin header files broken on Windows. I'm working on a followup patch to address that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143801 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Now that we have a portable 64 bit format string use it to make this simple ↵Benjamin Kramer
again. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143800 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Add two flags to the CC1 layer that I was hoping to avoid. We need toChandler Carruth
encode the *exact* semantics which the header search paths internally built by the Frontend layer have had, which is both non-user-provided, and at times adding the implicit extern "C" bit to the directory entry. There are lots of CC1 options that are very close, but none do quite this, and they are all already overloaded for other purposes. In some senses this makes the command lines more clean as it clearly indicates which flags are exclusively used to implement internal detection of "standard" header search paths. Lots of the implementation of this is really crufty, due to the surrounding cruft. It doesn't seem worth investing lots of time cleaning this up as it isn't new, and hopefully *lots* of this code will melt away as header search inside of the frontend becomes increasingly trivial. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143798 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Tweak LookThroughStmt() in LiveVariables to properly look through ↵Ted Kremenek
alternativing ParenExprs and OpaqueValueExprs. Thanks to Anna and Argiris for iterating on this function. My original patch embarssingly didn't even pass the Clang tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143797 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05LookThroughStmt GM release.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143796 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05LookThroughStmt v4.6.3Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143795 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Simplify LookThroughStmt in LiveVariables.cppArgyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143794 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Fix vector macros to correctly check argument types. <rdar://problem/10261670>Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143792 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Another correction to the LiveVariables commit (r143767, r143780).Anna Zaks
Make test/Analysis/misc-ps.c test pass. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143790 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05[analyzer] There should be a space between "expect" and "only"Anna Zaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143787 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Fix infinite loop in LiveVariables due to a misplaced 'break' (it would ↵Argyrios Kyrtzidis
break out of switch statement, not the while loop). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143780 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05On Linux, enable the gold plugin if we are using LTO.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143778 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Correct the grammar for __builtin_astype.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143777 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05serialized diagnostics: include FixIt information in serialized diagnostics.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143776 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Move definitions of SizeType and PtrDiffType to Mips32TargetInfoBase.Akira Hatanaka
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143775 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Fix MSVC build.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143770 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Fix one last place where we weren't writing into a string literal consistently.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143769 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Fix incorrect format string in debug output.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143768 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Teach LiveVariables to look through OpaqueValueExprs for extending Stmt ↵Ted Kremenek
liveness. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143767 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Per discussion with John McCall, don't add OpaqueValueExprs to the CFG.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143766 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05serialized diagnostics: pull emission of filenames into diagnostic block.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143765 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05serialized diagnostics: pull emission of diagnostic flag string into ↵Ted Kremenek
diagnostics block. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143764 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Serialized diagnostics: pull category name serialization into diagnostic ↵Ted Kremenek
blocks. The goal is to remove BLOCK_STRINGS so that the bitcode file can potentially be streamed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143763 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05serialized diagnostics: emit source ranges.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143762 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Move definition of record/block IDs for serialized diagnostics to public header.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143761 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05Serialized diagnostics: encode a 24 bit version number as part of the "magic ↵Ted Kremenek
number" of serialized diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143760 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05serialized diagnostics: unique warning strings when emitting serialized ↵Ted Kremenek
diagnostics. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143759 91177308-0d34-0410-b5e6-96231b3b80d8