| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 103211
|
| |
|
|
|
|
| |
scope. Thanks to Steven Watanabe for correcting me.
llvm-svn: 103210
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
available_externally linkage, since they may not have been given a
strong definition in another translation unit. Without this patch, the
following test case fails to link with a GCC-compiled libstdc++:
#include <sstream>
int main() { std::basic_stringbuf<char> bs; }
Fixes the last problem with the Boost.IO library.
llvm-svn: 103208
|
| |
|
|
| |
llvm-svn: 103204
|
| |
|
|
|
|
|
| |
us to find local variables, too. Fixes the last remaining
Boost.Rational failure.
llvm-svn: 103203
|
| |
|
|
| |
llvm-svn: 103202
|
| |
|
|
| |
llvm-svn: 103200
|
| |
|
|
| |
llvm-svn: 103198
|
| |
|
|
| |
llvm-svn: 103197
|
| |
|
|
| |
llvm-svn: 103192
|
| |
|
|
|
|
| |
Fixes rdar://problem/4232969, or at least the clang parts of it.
llvm-svn: 103191
|
| |
|
|
| |
llvm-svn: 103190
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 103187
|
| |
|
|
|
|
| |
C++ object properties. (still radar 7468090).
llvm-svn: 103182
|
| |
|
|
|
|
| |
which breaks clang-i686-xp-msvc9 test-clang.
llvm-svn: 103180
|
| |
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 103177
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 103176
|
| |
|
|
| |
llvm-svn: 103175
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
"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.
llvm-svn: 103174
|
| |
|
|
|
|
|
| |
an enum in the enum decl itself. Use some spare bits from TagDecl for this
purpose.
llvm-svn: 103173
|
| |
|
|
|
|
| |
fixing PR7063.
llvm-svn: 103171
|
| |
|
|
|
|
| |
in the near future.
llvm-svn: 103169
|
| |
|
|
| |
llvm-svn: 103168
|
| |
|
|
|
|
|
| |
float -> double (which happens because they are modelled as int(...)
functions), and add a testcase for isinf.
llvm-svn: 103167
|
| |
|
|
|
|
|
| |
this is generating correct but suboptimal (extra extend to double)
code for the float case. Will investigate next.
llvm-svn: 103166
|
| |
|
|
| |
llvm-svn: 103165
|
| |
|
|
|
|
|
| |
building and passing arguments to cc1 layer when setting values to their
defaults.
llvm-svn: 103162
|
| |
|
|
|
|
| |
after inlining post-call checking shouldn't be done.
llvm-svn: 103161
|
| |
|
|
|
|
|
| |
flag now, and can be used with other analyses. Only turned it on for C++
methods for now.
llvm-svn: 103160
|
| |
|
|
|
|
|
|
|
| |
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.
llvm-svn: 103144
|
| |
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 103143
|
| |
|
|
|
|
| |
picking a more consistent pattern.
llvm-svn: 103142
|
| |
|
|
| |
llvm-svn: 103141
|
| |
|
|
|
|
|
|
|
| |
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).
llvm-svn: 103132
|
| |
|
|
|
|
|
|
|
| |
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).
llvm-svn: 103131
|
| |
|
|
|
|
|
|
|
| |
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.
llvm-svn: 103127
|
| |
|
|
|
|
|
| |
of properties which are of C++ objects. Code Gen to follow
(Radar 7468090).
llvm-svn: 103123
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 103115
|
| |
|
|
| |
llvm-svn: 103090
|
| |
|
|
|
|
|
|
| |
destructors, place the __cxa_atexit call after the __cxa_guard_release
call, mimicking GCC/LLVM-GCC behavior. Noticed while debugging
something related.
llvm-svn: 103088
|
| |
|
|
|
|
|
| |
with no whitespace. This will allow statements to be referred to in
attribute TableGen files.
llvm-svn: 103087
|
| |
|
|
|
|
|
| |
whitespace which makes this patch unreadable. Will recommit without the
whitespace.
llvm-svn: 103086
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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!
llvm-svn: 103081
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 103080
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 103079
|
| |
|
|
| |
llvm-svn: 103078
|
| |
|
|
| |
llvm-svn: 103077
|
| |
|
|
| |
llvm-svn: 103075
|
| |
|
|
| |
llvm-svn: 103074
|
| |
|
|
| |
llvm-svn: 103072
|