| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
stuff behind a private static function.
llvm-svn: 64898
|
| |
|
|
|
|
|
|
|
|
| |
to do in this area, since there are other places that reference
FunctionDecls.
Don't allow "overloadable" functions (in C) to be declared without a
prototype.
llvm-svn: 64897
|
| |
|
|
| |
llvm-svn: 64896
|
| |
|
|
|
|
| |
it faster in the common case when NSConstantString is around.
llvm-svn: 64895
|
| |
|
|
| |
llvm-svn: 64894
|
| |
|
|
| |
llvm-svn: 64893
|
| |
|
|
|
|
|
|
| |
the various PPTokens that are pasted together to make it. In the course
of working on this, I discovered ParseObjCStringLiteral which needs some
work. I'll tackle it next.
llvm-svn: 64892
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When comparing if one Range is "less" than another, compare the actual APSInt
numeric values instead of their pointer addresses. This ensures that the
ImmutableSet in RangeSet always has a consistent ordering between Ranges. This
is critical for generating the same digest/hash for the contents of the sets.
This was a serious performance bug because it would often cause state caching
to be disabled along complicated paths.
Along the way:
- Put Range and RangeSet in the "anonymous namespace" and mark them hidden
llvm-svn: 64890
|
| |
|
|
|
|
|
| |
Note that one test attr-objc-gc.m fails. I will fix this
after removing these attributes from the Decl nodes.
llvm-svn: 64889
|
| |
|
|
|
|
|
| |
compatible, even if they are weird implicit objc pointer types like
Class.
llvm-svn: 64885
|
| |
|
|
| |
llvm-svn: 64884
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
back to the summary used when evaluating the statement associated with a
simulation node. This is now being used to help improve the checker's
diagnostics. To get things started, the checker now emits a path diagnostic
indicating that 'autorelease' is a no-op in GC mode.
Some of these changes are exposing further grossness in the interface between
BugReporter and the ExplodedGraph::Trim facilities. These really need to be
cleaned up one day.
llvm-svn: 64881
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Return of _Complex long double used wrong type.
2. va_arg of types passed in two SSE registers didn't account for
extra space in register save area.
Down to 18 failures on gcc/compat/x86_64. Combined 32/64 results are:
--
=== gcc Summary ===
# of expected passes 1292
# of unexpected failures 34
# of unsupported tests 2
--
llvm-svn: 64880
|
| |
|
|
| |
llvm-svn: 64876
|
| |
|
|
|
|
|
| |
Add assert to isICE that, on success, result must be the same as
EvaluateAsInt()... this enforces a minimum level of sanity.
llvm-svn: 64865
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- This idiom ensures that the result will have the right width and
type.
- Tested on most of x86_64/llvm-test to satisfy my paranoia.
- This fixes at least the following bugs:
o UnaryTypeTraitExpr wasn't setting the width correctly.
o Arithmetic on _Bool wasn't setting the width correctly.
And probably a number more.
llvm-svn: 64864
|
| |
|
|
|
|
|
|
|
| |
keep searching for C++ headers when in C++ mode). In theory clang
should be able to find all of its own headers now. If not, the
CPATH or C_INCLUDE_PATH environment variables can be specified to
add a include path.
llvm-svn: 64862
|
| |
|
|
| |
llvm-svn: 64852
|
| |
|
|
|
|
| |
Build of the parm list with the iterator, not end().
llvm-svn: 64851
|
| |
|
|
|
|
| |
with Expr::Evaluate().
llvm-svn: 64850
|
| |
|
|
| |
llvm-svn: 64849
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specialization of class templates, e.g.,
template<typename T> class X;
template<> class X<int> { /* blah */ };
Each specialization is a different *Decl node (naturally), and can
have different members. We keep track of forward declarations and
definitions as for other class/struct/union types.
This is only the basic framework: we still have to deal with checking
the template headers properly, improving recovery when there are
failures, handling nested name specifiers, etc.
llvm-svn: 64848
|
| |
|
|
| |
llvm-svn: 64831
|
| |
|
|
|
|
|
|
|
|
|
| |
- Renamed to getDeclAlignInBytes since most other query functions
work in bits.
- Fun to track down as isIntegerConstantExpr was getting it right,
but Evaluate() was getting it wrong. Maybe we should assert they
compute the same thing when they succeed?
llvm-svn: 64828
|
| |
|
|
| |
llvm-svn: 64826
|
| |
|
|
| |
llvm-svn: 64820
|
| |
|
|
| |
llvm-svn: 64808
|
| |
|
|
| |
llvm-svn: 64806
|
| |
|
|
|
|
| |
dyn_cast.
llvm-svn: 64805
|
| |
|
|
| |
llvm-svn: 64804
|
| |
|
|
|
|
| |
IdentifierResolver.
llvm-svn: 64802
|
| |
|
|
|
|
| |
Pass the DeclContext to ObjCIvarDecls as well.
llvm-svn: 64801
|
| |
|
|
| |
llvm-svn: 64800
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Zhongxing Xu. The resultant code is less than 1/2 the size of the original.
Key highlights:
- All CouldBeXXX methods have been removed. Checking for feasibility is now just
done in the AddXXX methods.
- RangeSets now represent "all possible values" explicitly as the range set {
[min, max] } instead of the empty set. The empty set now represents "no
feasible values". This change consolidated much of the core algorithm to only
have one code path instead of alternate paths that considered the empty set to
represent "all possible falues."
llvm-svn: 64787
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
IRgen no longer relies on isConstantInitializer, instead we just try
to emit the constant. If that fails then in C we emit an error
unsupported (this occurs when Sema accepted something that it doesn't
know how to fold, and IRgen doesn't know how to emit) and in C++ we
emit a guarded initializer.
This ends up handling a few more cases, because IRgen was actually
able to emit some of the constants Sema accepts but can't Evaluate().
For example, PR3398.
llvm-svn: 64780
|
| |
|
|
| |
llvm-svn: 64779
|
| |
|
|
|
|
|
| |
general use; as for, objc2's gc type attributes. No
change in functionality.
llvm-svn: 64778
|
| |
|
|
| |
llvm-svn: 64772
|
| |
|
|
| |
llvm-svn: 64770
|
| |
|
|
| |
llvm-svn: 64769
|
| |
|
|
| |
llvm-svn: 64768
|
| |
|
|
|
|
| |
much pain when compiling the Linux kernel (PR3592).
llvm-svn: 64767
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
diagnostics. I'm not sure I want to keep this, but hey, it's easy
and could be useful or something, even if guarded by a
-fshow-me-tons-of-details option. A silly example is:
#define A B
#define C A
#define D C
int y = D;
We now emit:
t.c:11:9: error: use of undeclared identifier 'B'
int y = D;
^
t.c:9:11: note: instantiated from:
#define D C
^
t.c:8:11: note: instantiated from:
#define C A
^
t.c:7:11: note: instantiated from:
#define A B
^
A more useful example is from tgmath:
t.c:4:9: error: no matching function for call to '__tg_acos'
return acos(x);
^~~~~~~
/Users/sabre/llvm/Debug/Headers/tgmath-sofar.h:51:17: note: instantiated from:
#define acos(x) __tg_acos(x)
^
... candidate set follows ...
This does not yet print ranges in instantiation info, (e.g. highlighting the
range "__tg_acos(x)" in the last example), but that could be added if we
decide this is a good idea :).
Thoughts and bug reports welcome!
llvm-svn: 64761
|
| |
|
|
| |
llvm-svn: 64760
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
t.c:4:9: error: invalid type 'short *' to __real operator
__tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)),
^
instead of:
t.c:4:9: error: invalid type 'short *' to __real or __imag operator
__tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)),
^
fixing a fixme. It would be even fancier to get the spelling of the token, but I
don't care *that* much :)
llvm-svn: 64759
|
| |
|
|
| |
llvm-svn: 64758
|
| |
|
|
| |
llvm-svn: 64757
|
| |
|
|
| |
llvm-svn: 64756
|
| |
|
|
| |
llvm-svn: 64755
|
| |
|
|
| |
llvm-svn: 64754
|