| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 132130
|
| |
|
|
|
|
|
|
|
| |
makes it into a special member function. This is very bad and can lead
to all sorts of nastiness including implicit member functions violating
the One Definition Rule. This should probably be made ill-formed in a
later version of the standard, but for now we'll just warn.
llvm-svn: 132104
|
| |
|
|
|
|
|
|
| |
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.
Originally r130717, but was backed out due to an ObjC regression.
llvm-svn: 132102
|
| |
|
|
|
|
| |
the values of globals when the called function is strlen.
llvm-svn: 132100
|
| |
|
|
| |
llvm-svn: 132096
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Example:
typedef int TYPE;
class C {
__if_exists(TYPE) {
TYPE a;
}
__if_not_exists(TYPE) {
this will never be parsed.
}
};
llvm-svn: 132052
|
| |
|
|
| |
llvm-svn: 132049
|
| |
|
|
|
|
| |
types do not follow the Core Foundation naming conventions.
llvm-svn: 132048
|
| |
|
|
|
|
|
|
| |
type that turns one type into another. This is used as the basis to
implement __underlying_type properly - with TypeSourceInfo and proper
behavior in the face of templates.
llvm-svn: 132017
|
| |
|
|
| |
llvm-svn: 132013
|
| |
|
|
| |
llvm-svn: 132001
|
| |
|
|
|
|
|
|
| |
non-final, class without a virtual destructor.
Patch by Matthieu Monrocq!
llvm-svn: 131989
|
| |
|
|
|
|
|
|
|
|
|
|
| |
that the unevaluated subexpressions of &&, ||, and ? : are not
considered when determining whether the expression is a constant
expression. Also, turn the "used in its own initializer" warning into
a runtime-behavior warning, so that it doesn't fire when a variable is
used as part of an unevaluated subexpression of its own initializer.
Fixes PR9999.
llvm-svn: 131968
|
| |
|
|
|
|
|
|
|
|
| |
through sugared types when testing for TagTypes. This was the actual
cause of the only false positive in Clang+LLVM.
Next evaluation will be over a much larger selection of code including
large amounts of open source code.
llvm-svn: 131957
|
| |
|
|
| |
llvm-svn: 131950
|
| |
|
|
| |
llvm-svn: 131941
|
| |
|
|
|
|
|
|
|
|
| |
issues and also add a test.
We should now handle defaulted members of templates properly. No
comment as to whether or not this also holds for templated functions,
but defaulting those is kind of insane.
llvm-svn: 131938
|
| |
|
|
|
|
|
|
| |
fixes PR9965, but we're not out of the water yet, as we do not
successfully handle out-of-line definitions, due to my utter
misunderstanding of how we manage templates.
llvm-svn: 131920
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
declaration found is unaccessible (private) and that declaration was bring into scope via another using declaration whose target declaration is accessible (public) then no error is generated.
Example:
class A { public: int f(); };
class B : public A { private: using A::f; };
class C : public B { private: using B::f; };
Here, B::f is private so this should fail in Standard C++, but because B::f refers to A::f which is public MSVC accepts it.
This fixes 1 error when parsing MFC code with clang.
llvm-svn: 131896
|
| |
|
|
| |
llvm-svn: 131882
|
| |
|
|
|
|
|
| |
code generator will do it. With this patch, clang compiles the example
in PR9794 to not have an alloca temporary.
llvm-svn: 131881
|
| |
|
|
|
|
|
| |
generator will give it something sufficient. This is important because
the mid-level optimizer doesn't know what alignment is required otherwise.
llvm-svn: 131879
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
header. Getting it in the wrong order generated incorrect line markers in -E
mode. In the testcase from PR9861 we used to generate:
# 1 "test.c" 2
# 1 "./foobar.h" 1
# 0 "./foobar.h"
# 0 "./foobar.h" 3
# 2 "test.c" 2
now we properly produce:
# 1 "test.c" 2
# 1 "./foobar.h" 1
# 1 "./foobar.h" 3
# 2 "test.c" 2
This fixes PR9861.
llvm-svn: 131871
|
| |
|
|
| |
llvm-svn: 131844
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
minor issues along the way:
- Non-type template parameters of type 'std::nullptr_t' were not
permitted.
- We didn't properly introduce built-in operators for nullptr ==,
!=, <, <=, >=, or > as candidate functions .
To my knowledge, there's only one (minor but annoying) part of nullptr
that hasn't been implemented: catching a thrown 'nullptr' as a pointer
or pointer-to-member, per C++0x [except.handle]p4.
llvm-svn: 131813
|
| |
|
|
|
|
|
| |
function type. Educate template argument deduction thusly, fixing
PR9974 / <rdar://problem/9479155>.
llvm-svn: 131811
|
| |
|
|
|
|
| |
PR9973 / <rdar://problem/9479191>.
llvm-svn: 131810
|
| |
|
|
|
|
|
|
|
|
|
|
| |
non-POD/non-trivial object throuugh a C-style varargs. The warning
itself was default-mapped to error, but can be downgraded, but we were
treating it in Sema like a hard error, silently dropping the call.
Instead, treat this problem like a warning, and do what the warning
says we do: abort at runtime. To do so, we fake up a __builtin_trap()
expression that gets evaluated as part of the argument.
llvm-svn: 131805
|
| |
|
|
|
|
| |
instantiations and specializations. Fixes <rdar://problem/9126453> and PR8700.
llvm-svn: 131802
|
| |
|
|
|
|
|
|
| |
should use a constructor to default-initialize a
variable. InitializationSequence knows the rules for default
initialization, better. Fixes <rdar://problem/8501008>.
llvm-svn: 131796
|
| |
|
|
|
|
|
|
|
|
|
|
| |
prints the file, line, and column of a diagnostic. We currently
support Clang's normal format, MSVC, and Vi formats.
Note that we no longer change the diagnostic format based on
-fms-extensions.
Patch by Andrew Fish!
llvm-svn: 131794
|
| |
|
|
| |
llvm-svn: 131792
|
| |
|
|
|
|
| |
rdar://9475098.
llvm-svn: 131788
|
| |
|
|
|
|
| |
was being treated as postfix '--' in C mode.
llvm-svn: 131770
|
| |
|
|
|
|
|
| |
This case is tested by the fact that the modified test produces
significatly worse diagnostics. That's on the list.
llvm-svn: 131759
|
| |
|
|
| |
llvm-svn: 131754
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Type::isUnsignedIntegerOrEnumerationType(), which are like
Type::isSignedIntegerType() and Type::isUnsignedIntegerType() but also
consider the underlying type of a C++0x scoped enumeration type.
Audited all callers to the existing functions, switching those that
need to also handle scoped enumeration types (e.g., those that deal
with constant values) over to the new functions. Fixes PR9923 /
<rdar://problem/9447851>.
llvm-svn: 131735
|
| |
|
|
|
|
|
| |
to a warning, since apparently libstdc++'s debug mode does this (and
we can recover safely). Add a Fix-It to insert the "inline", just for kicks.
llvm-svn: 131732
|
| |
|
|
|
|
|
| |
manifested in a crash with blocks in PR9953, but it was a ticking time
bomb for normal functions, too. Fixes PR9953.
llvm-svn: 131731
|
| |
|
|
|
|
| |
useful
llvm-svn: 131728
|
| |
|
|
| |
llvm-svn: 131722
|
| |
|
|
|
|
| |
constructor" again
llvm-svn: 131706
|
| |
|
|
|
|
| |
reason about.
llvm-svn: 131702
|
| |
|
|
| |
llvm-svn: 131701
|
| |
|
|
|
|
| |
template case.
llvm-svn: 131692
|
| |
|
|
| |
llvm-svn: 131691
|
| |
|
|
| |
llvm-svn: 131672
|
| |
|
|
| |
llvm-svn: 131670
|
| |
|
|
| |
llvm-svn: 131640
|
| |
|
|
|
|
| |
for destructors until the class is complete and destructors have been adjusted.
llvm-svn: 131632
|