aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2010-05-06The global variable for the VTT might not have external linkage; allowDouglas Gregor
us to find local variables, too. Fixes the last remaining Boost.Rational failure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103203 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Fixed DISABLE_SMART_POINTERS breakageDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103198 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Handle -ffunction-sections and -fdata-sections in the driver.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103197 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Basic: Update getClangRepositoryPath for my change to integration branch layout.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103192 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Diagnose deprecated/unavailable functions selected by overload resolution.John McCall
Fixes rdar://problem/4232969, or at least the clang parts of it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103191 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Rework our handling of temporary objects within the conditions ofDouglas Gregor
if/switch/while/do/for statements. Previously, we would end up either: (1) Forgetting to destroy temporaries created in the condition (!), (2) Destroying the temporaries created in the condition *before* converting the condition to a boolean value (or, in the case of a switch statement, to an integral or enumeral value), or (3) In a for statement, destroying the condition's temporaries at the end of the increment expression (!). We now destroy temporaries in conditions at the right times. This required some tweaking of the Parse/Sema interaction, since the parser was building full expressions too early in many places. Fixes PR7067. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103187 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Code Gen support for Getter/Setter synthesis of Fariborz Jahanian
C++ object properties. (still radar 7468090). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103182 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Reverted part of r103177 (repositioning of clang-builtin include/)mike-m
which breaks clang-i686-xp-msvc9 test-clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103180 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Reposition clang-builtin include/ to immediately precede /usr/include/,mike-m
matching gcc compiler. Fixes #include_next <...> shenanigans that lead to file-not-found failures with <cstddef> on libstdc++ 4.3.[012]. Updated C++ include header search paths for various Debian/Ubuntu and Fedora linux distros. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103177 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Push TypeSourceInfo::getTypeLoc() into a header file so that it'sJohn McCall
inlineable. That header file has to be TypeLoc.h, which means that TypeLoc.h needs to depend on Decl.h because TypeSourceInfo doesn't have its own header. That could be remedied, though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103176 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Rearchitect -Wconversion and -Wsign-compare. Instead of computing themJohn McCall
"bottom-up" when implicit casts and comparisons are inserted, compute them "top-down" when the full expression is finished. Makes it easier to coordinate warnings and thus implement -Wconversion for signedness conversions without double-warning with -Wsign-compare. Also makes it possible to realize that a signedness conversion is okay because the context is performing the inverse conversion. Also simplifies some logic that was trying to calculate the ultimate comparison/result type and getting it wrong. Also fixes a problem with the C++ explicit casts which are often "implemented" in the AST with a series of implicit cast expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103174 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Remember the number of positive and negative bits used by the enumerators ofJohn McCall
an enum in the enum decl itself. Use some spare bits from TagDecl for this purpose. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103173 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06simplify EmitAggMemberInitializer a bit and make it work in 32-bit mode,Chris Lattner
fixing PR7063. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103171 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06add todos for isinf_sign and isnormal, which I don't intend to implementChris Lattner
in the near future. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103169 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06implement codegen support for __builtin_isfinite, part of PR6083Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103168 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06optimize builtin_isnan/isinf to not do an extraneous extension fromChris Lattner
float -> double (which happens because they are modelled as int(...) functions), and add a testcase for isinf. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103167 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06implement part of PR6083: codegen support for isinf. Like isnan,Chris Lattner
this is generating correct but suboptimal (extra extend to double) code for the float case. Will investigate next. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103166 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Mark a variable as used in the absence of asserts to silence a GCC warning.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103165 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Remove a dependency on Frontend headers in the Driver library. Also savesChandler Carruth
building and passing arguments to cc1 layer when setting values to their defaults. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103162 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Turn -analyzer-inline-call on for C functions. This also fixed a bug thatZhongxing Xu
after inlining post-call checking shouldn't be done. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103161 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Make -analyzer-inline-call not a separate analysis. Instead it's a boolean Zhongxing Xu
flag now, and can be used with other analyses. Only turned it on for C++ methods for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103160 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Partial and full specializations of a class template may have aDouglas Gregor
different tag kind ("struct" vs. "class") than the primary template, which has an affect on access control. Should fix the last remaining Boost.Accumulors failure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103144 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Workaround a really serious caching bug in ↵Ted Kremenek
SourceManager::isBeforeInTranslationUnit() where the method will sometimes return different results for the same input SourceLocations. I haven't unraveled this method completely yet, so this truly is a workaround until a better fix comes along. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103143 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Clean up the {} and else placement. This fixes an ambiguous else as well asChandler Carruth
picking a more consistent pattern. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103142 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06Silence a pedantic GCC warning by making the grouping of && and || explicit.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103141 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Add IgnoreParenImpCasts() to Expr, which is basically like IgnoreParenCastsJohn McCall
except it only skips implicit casts. Also fix ObjCImplicitGetterSetterRefExpr's child_begin to skip the base expression if it's actually a type reference (which you get with static property references). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103132 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Pass the globaldecl into GetOrCreateLLVMFunction so that llvmChris Lattner
function attributes like byval get applied to the function definition. This fixes PR7058 and makes i386 llvm/clang bootstrap pass all the same tests as x86-64 bootstrap for me (the llvmc tests still fail in both). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103131 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05When implicit definition of the copy-assignment operator fails,Douglas Gregor
provide a note that shows where the copy-assignment operator was needed. We used to have this, but I broke it during refactoring. Finishes PR6999. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103127 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05This patch deals with Sema Part of Setter/Getter synthesisFariborz Jahanian
of properties which are of C++ objects. Code Gen to follow (Radar 7468090). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103123 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05When we emit a non-constant initializer for a global variable ofDouglas Gregor
reference type, make sure that the initializer we build is the of the appropriate type for the *reference*, not for the thing that it refers to. Fixes PR7050. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103115 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Test commit.mike-m
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103090 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05For thread-safe static initialization of local statics withDouglas Gregor
destructors, place the __cxa_atexit call after the __cxa_guard_release call, mimicking GCC/LLVM-GCC behavior. Noticed while debugging something related. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103088 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Reapplying patch to change StmtNodes.def to StmtNodes.td, this timeSean Hunt
with no whitespace. This will allow statements to be referred to in attribute TableGen files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103087 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Revert r103072; I accidentally ended up deleting a bunch of trailingSean Hunt
whitespace which makes this patch unreadable. Will recommit without the whitespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103086 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05 Support for 'template' as a disambiguator (PR7030)Douglas Gregor
ParseOptionalCXXScopeSpecifier() only annotates the subset of template-ids which are not subject to lexical ambiguity. Add support for the more general case in ParseUnqualifiedId() to handle cases such as A::template B(). Also improve some diagnostic locations. Fixes PR7030, from Alp Toker! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103081 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05add a new --print-diagnostic-categories option, which causes the driver toChris Lattner
print out all of the category numbers with their description. This is useful for clients that want to map the numbers produced by --fdiagnostics-show-category=id to their human readable string form. The output is simple but utilitarian: $ clang --print-diagnostic-categories 1,Format String 2,Something Else This implements rdar://7928193 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103080 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Reimplement code generation for copying fields in theDouglas Gregor
implicitly-generated copy constructor. Previously, Sema would perform some checking and instantiation to determine which copy constructors, etc., would be called, then CodeGen would attempt to figure out which copy constructor to call... but would get it wrong, or poke at an uninstantiated default argument, or fail in other ways. The new scheme is similar to what we now do for the implicit copy-assignment operator, where Sema performs all of the semantic analysis and builds specific ASTs that look similar to the ASTs we'd get from explicitly writing the copy constructor, so that CodeGen need only do a direct translation. However, it's not quite that simple because one cannot explicit write elementwise copy-construction of an array. So, I've extended CXXBaseOrMemberInitializer to contain a list of indexing variables used to copy-construct the elements. For example, if we have: struct A { A(const A&); }; struct B { A array[2][3]; }; then we generate an implicit copy assignment operator for B that looks something like this: B::B(const B &other) : array[i0][i1](other.array[i0][i1]) { } CodeGen will loop over the invented variables i0 and i1 to visit all elements in the array, so that each element in the destination array will be copy-constructed from the corresponding element in the source array. Of course, if we're dealing with arrays of scalars or class types with trivial copy-assignment operators, we just generate a memcpy rather than a loop. Fixes PR6928, PR5989, and PR6887. Boost.Regex now compiles and passes all of its regression tests. Conspicuously missing from this patch is handling for the exceptional case, where we need to destruct those objects that we have constructed. I'll address that case separately. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103079 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Use a more appropriate LLVM type for the vtable pointer.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103078 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Unbreak CMake build.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103077 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05fit in 80 colsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103075 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05Change StmtNodes.def to StmtNodes.td in anticipation of a rewrite of attributesSean Hunt
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103072 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04add a new -fdiagnostics-show-category=none/id/name option, giving controlChris Lattner
over choice of: t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat] t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1] t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String] dox to come. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103056 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04When -fdiagnostics-print-source-range-info is specified,Chris Lattner
print the diagnostic category number in the [] at the end of the line. For example: $ cat t.c #include <stdio.h> void foo() { printf("%s", 4); } $ clang t.c -fsyntax-only -fdiagnostics-print-source-range-info t.c:3:11:{3:10-3:12}{3:15-3:16}: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1] printf("%s", 4); ~^ ~ 1 warning generated. Clients that want category information can now pick the number out of the output, rdar://7928231. More coming. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103053 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Emit the globals, metadata, etc. associated with static variables even whenJohn McCall
they're unreachable. This matters because (if they're POD, or if this is C) the scope containing the variable might be reachable even if the variable isn't. Fixes PR7044. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103052 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04add the ability to associate 'category' names with diagnosticsChris Lattner
and diagnostic groups. This allows the compiler to group diagnostics together (e.g. "Logic Warning", "Format String Warning", etc) like the static analyzer does. This is not exposed through anything in the compiler yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103051 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Fixes a code gen. crash when ivar object has trivial constructor.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103028 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04When instantiating a function that was declared via a typedef, e.g.,Douglas Gregor
typedef int functype(int, int); functype func; also instantiate the synthesized function parameters for the resulting function declaration. With this change, Boost.Wave builds and passes all of its regression tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103025 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Fixes a code gen crash when block is a reference type, etc.Fariborz Jahanian
(radar 7495203). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103022 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04Introduce a limit on the depth of the macro instantiation backtraceDouglas Gregor
printed in a diagnostic, similar to the limit we already have on the depth of the template instantiation backtrace. The macro instantiation backtrace is limited to 10 "instantiated from:" diagnostics; when it's longer than that, we'll show the first half, then say how many were suppressed, then show the second half. The limit can be changed with -fmacro-instantiation-limit=N, and turned off with N=0. This eliminates a lot of note spew with libraries making use of the Boost.Preprocess library. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103014 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04When creating a call to a base subobject's operator= in anDouglas Gregor
implicitly-defined copy assignment operator, suppress the protected access check. This eliminates the remaining failure in the Boost.SmartPtr library (that was a product of the copy-assignment generation rewrite) and, presumably, the Boost.TR1 library as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103010 91177308-0d34-0410-b5e6-96231b3b80d8