|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| | rdar://problem/8139919 .  This shouldn't make much of a difference at -O3, but should substantially reduce the number of generated memcpy's at -O0.
llvm-svn: 130717 | 
| | 
| 
| 
| 
| 
| | arguments to C++ constructors.  This is a stop-gap measure for Objective-C++ code that uses smart pointers to manage reference counts.
llvm-svn: 130711 | 
| | 
| 
| 
| 
| 
| | creating substrings if necessary and calling the appropriate StringRef::compare/compare_lower().
llvm-svn: 130708 | 
| | 
| 
| 
| 
| 
| | by Richard Trieu!
llvm-svn: 130703 | 
| | 
| 
| 
| | llvm-svn: 130696 | 
| | 
| 
| 
| 
| 
| 
| | "X:\foo\bar") with -isysroot. test/PCH/reloc.c can pass.
FIXME: We should consider better isysroot scheme on Win32 hosts.
llvm-svn: 130683 | 
| | 
| 
| 
| 
| | FIXME: It would crash with -integrated-as. Implement -g on MCCOFF.
llvm-svn: 130682 | 
| | 
| 
| 
| 
| 
| 
| 
| | to let cygming pass.
This test seeks a verbose comment in output. By default, "-integrated-as" sets verbose-asm. Cygming is not ready for -integrated-as yet.
llvm-svn: 130681 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | parameter node and use this to correctly mangle parameter
references in function template signatures.
A follow-up patch will improve the storage usage of these
fields;  here I've just done the lazy thing.
llvm-svn: 130669 | 
| | 
| 
| 
| | llvm-svn: 130659 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 3 lines of code and improve a bunch of information in the libclang view
of the code.
Updates the two tests that exercise this with the new data, checking
that each new source location actually points back to the declared
template parameter.
llvm-svn: 130656 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | As far as I know, this implementation is complete but might be missing a
few optimizations. Exceptions and virtual bases are handled correctly.
Because I'm an optimist, the web page has appropriately been updated. If
I'm wrong, feel free to downgrade its support categories.
llvm-svn: 130642 | 
| | 
| 
| 
| 
| 
| | unsigned with the i686-pc-win32 triple.
llvm-svn: 130636 | 
| | 
| 
| 
| 
| 
| | less agressive about disabling cfi on linux :-(
llvm-svn: 130627 | 
| | 
| 
| 
| | llvm-svn: 130624 | 
| | 
| 
| 
| 
| 
| | wchar_t is an unsigned type.
llvm-svn: 130620 | 
| | 
| 
| 
| 
| 
| | particular, make sure to handle WCHAR_MIN correctly.
llvm-svn: 130618 | 
| | 
| 
| 
| | llvm-svn: 130617 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | partial ordering of function templates, use a simple superset
relationship rather than the convertibility-implying
isMoreQualifiedThan/compatibilyIncludes relationship. Fixes partial
ordering between references and address-space-qualified references.
llvm-svn: 130612 | 
| | 
| 
| 
| | llvm-svn: 130606 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | types after looking through arrays. Arrays with an unknown bound seem to
be specifically allowed in the library type traits in C++0x, and GCC's
builtin __is_trivial returns 'true' for the type 'int[]'. Now Clang
agrees with GCC about __is_trivial here.
Also hardens these methods against dependent types by just returning false.
llvm-svn: 130605 | 
| | 
| 
| 
| | llvm-svn: 130598 | 
| | 
| 
| 
| 
| 
| | checker in Objective-C++ mode.
llvm-svn: 130559 | 
| | 
| 
| 
| 
| 
| 
| 
| | rhs when its 'forwarding' pointer may be modified 
in rhs evaluation as result of call to Block_copy.
// rdar://9309454
llvm-svn: 130545 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | positives still further.
The plan is to:
1) Create a more targeted warning for memset of memory pointing at
   a type with virtual methods or bases where a vptr would be
   overwritten.
2) Consider turning the above warning back on by default.
3) Evaluate whether any false positives in the existing warning can be
   detected and white listed in the warning implementation.
4) If #3 lowers the noise floor enough, enable the full warning in -Wall
   or -Wextra.
Comments or suggestions welcome. Even more welcome are specific test
cases which trigger the warning and shouldn't.
llvm-svn: 130538 | 
| | 
| 
| 
| 
| 
| | want to see these warnings, and often explicitly pass -Wparentheses.
llvm-svn: 130535 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | definition of POD. Specifically, this allows certain non-aggregate
types due to their data members being private.
The representation of C++11 POD testing is pretty gross. Any suggestions
for improvements there are welcome. Especially the name
'isCXX11PODType()' seems truly unfortunate.
llvm-svn: 130492 | 
| | 
| 
| 
| | llvm-svn: 130491 | 
| | 
| 
| 
| 
| 
| | instantiated in a different PCH than its containing class. Otherwise we get double definition errors. Fixes a Boost.MPL problem that affects Boost.Accumulators and probably a lot more of Boost.
llvm-svn: 130488 | 
| | 
| 
| 
| | llvm-svn: 130486 | 
| | 
| 
| 
| | llvm-svn: 130469 | 
| | 
| 
| 
| 
| 
| | new type trait __is_same
llvm-svn: 130468 | 
| | 
| 
| 
| 
| 
| 
| | -C++ objects with user-declared constructor don't need zero'ing.
-We can zero-initialize arrays of C++ objects in "bulk" now, in which case don't zero-initialize each object again.
llvm-svn: 130453 | 
| | 
| 
| 
| 
| 
| | // rdar://8823265 - wip.
llvm-svn: 130451 | 
| | 
| 
| 
| 
| 
| | the tool chain, instead of based on the translated arguments.
llvm-svn: 130440 | 
| | 
| 
| 
| 
| 
| | avoiding sporadic win32 failures about renaming a temporary.
llvm-svn: 130439 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | initializer make sure
that a non-trivial C++ constructor gets called.
Fixes rdar://9347552 & http://llvm.org/PR9801
llvm-svn: 130421 | 
| | 
| 
| 
| | llvm-svn: 130420 | 
| | 
| 
| 
| 
| 
| 
| 
| | non-CVR qualifiers as well as CVR qualifiers. For example, don't allow
a reference to an integer in address space 1 to bind to an integer in
address space 2.
llvm-svn: 130411 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | as a keyword for the __is_signed type trait. Cope with this conflict
via some hackish recovery: if we see a declaration of the form
 static const bool __is_signed
then we stop treating __is_signed as a keyword and instead treat it as
an identifier. It's ugly, but it's better than making the __is_signed
type trait conditional on some language flag. Fixes PR9804.
llvm-svn: 130399 | 
| | 
| 
| 
| | llvm-svn: 130398 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This idiom is used everywhere in MFC/COM code and as such this patch removes hundreds of errors when parsing MFC code with clang.
Example: 
template <class T, const GUID* g = &__uuidof(T)>
class ComTemplate  { };
typedef ComTemplate<struct_with_uuid, &__uuidof(struct_with_uuid)> COM_TYPE;
Of course this is just parsing support. Trying to use this in CodeGen will generate:
error: cannot yet mangle expression type CXXUuidofExpr
llvm-svn: 130381 | 
| | 
| 
| 
| 
| 
| | worked out.
llvm-svn: 130376 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | make sure to mark the destructor.  This normally isn't required,
because the destructor should have been marked as part of the
declaration of the local, but it's necessary when the variable
is a parameter because it's the call sites that are responsible
for those destructors.
llvm-svn: 130372 | 
| | 
| 
| 
| | llvm-svn: 130370 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | defines to real types.
Otherwise statements like:
  __int64 var = __int64(0);
would be expanded to:
  long long var = long long(0);
and fail to compile.
llvm-svn: 130369 | 
| | 
| 
| 
| 
| 
| | may provide a deviant definition of memset).
llvm-svn: 130368 | 
| | 
| 
| 
| | llvm-svn: 130367 | 
| | 
| 
| 
| 
| 
| 
| 
| | Patch authored by Sohail Somani.
Provide parsing and AST support for Windows structured exception handling.
llvm-svn: 130366 | 
| | 
| 
| 
| 
| 
| 
| | non-CVR qualifiers. We can now properly match address-space--qualified
references during template argument deduction.
llvm-svn: 130365 |