| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Patch by Amara Emerson.
llvm-svn: 165128
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction (for Intel Atom) was not being done by Clang, because
the type context used by Clang is not the default context.
It fixes the problem by getting the global context types for each div/rem
instruction in order to compare them against the types in the BypassTypeMap.
Tests for this will be done as a separate patch to Clang.
Patch by Tyler Nowicki.
llvm-svn: 165126
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
optimization
is not profitable in many cases because modern processors perform multiple stores
in parallel and merging stores prior to merging requires extra work. We handle two main cases:
1. Store of multiple consecutive constants:
q->a = 3;
q->4 = 5;
In this case we store a single legal wide integer.
2. Store of multiple consecutive loads:
int a = p->a;
int b = p->b;
q->a = a;
q->b = b;
In this case we load/store either ilegal vector registers or legal wide integer registers.
llvm-svn: 165125
|
|
|
|
|
|
|
|
|
| |
...and fix the run line so that the expected warnings are the same on
all platforms.
This reverts r165088 / d09074f0ca06626914108f1c0d4e70adeb851e01.
llvm-svn: 165124
|
|
|
|
|
|
|
|
|
| |
Corrects a problem whereby MCSchedModel was not being set up when
the CPU type was auto-detected.
Patch by Andy Zhang.
llvm-svn: 165122
|
|
|
|
| |
llvm-svn: 165120
|
|
|
|
| |
llvm-svn: 165119
|
|
|
|
| |
llvm-svn: 165118
|
|
|
|
|
|
| |
Part of PR14005.
llvm-svn: 165117
|
|
|
|
|
|
| |
Currently, it's ignored if the number of set bits isn't divisible by 4.
llvm-svn: 165116
|
|
|
|
|
|
|
|
|
| |
http://clang.llvm.org/docs/ClangTools.html, this adds -fixit option to
clang-check. Thus, clang-check can become a general-purpose tool to run
clang capitalizing on the info stored in a compilation database.
Review: http://llvm-reviews.chandlerc.com/D51
llvm-svn: 165110
|
|
|
|
| |
llvm-svn: 165109
|
|
|
|
| |
llvm-svn: 165108
|
|
|
|
| |
llvm-svn: 165107
|
|
|
|
| |
llvm-svn: 165106
|
|
|
|
| |
llvm-svn: 165105
|
|
|
|
|
|
| |
regex for version tuples.
llvm-svn: 165104
|
|
|
|
|
|
|
|
| |
can't have the logic here to add in the 'tools/{driver,libclang}' directories,
because they will be added in for ALL Makefiles which #include the top-level
one. Place the logic into the 'tools' Makefile.
llvm-svn: 165103
|
|
|
|
|
|
| |
not propagate through implicit defs.
llvm-svn: 165102
|
|
|
|
|
|
|
|
| |
a memcpy to reflect that '0' has a different meaning when applied to
a load or store. Now we correctly use underaligned loads and stores for
the test case added.
llvm-svn: 165101
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
necessary during rewriting. As part of this, fix a real think-o here
where we might have left off an alignment specification when the address
is in fact underaligned. I haven't come up with any way to trigger this,
as there is always some other factor that reduces the alignment, but it
certainly might have been an observable bug in some way I can't think
of. This also slightly changes the strategy for placing explicit
alignments on loads and stores to only do so when the alignment does not
match that required by the ABI. This causes a few redundant alignments
to go away from test cases.
I've also added a couple of tests that really push on the alignment that
we end up with on loads and stores. More to come here as I try to fix an
underlying bug I have conjectured and produced test cases for, although
it's not clear if this bug is the one currently hitting dragonegg's
gcc47 bootstrap.
llvm-svn: 165100
|
|
|
|
|
|
| |
more detail.
llvm-svn: 165099
|
|
|
|
| |
llvm-svn: 165098
|
|
|
|
| |
llvm-svn: 165097
|
|
|
|
|
|
| |
full compiler_rt and libprofile
llvm-svn: 165096
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* nullptr used to be mapped to ERROR, now mapped to nullptr
* integral was missing
* expressions now have their own error message, so they won't reach
this. Map them to ERROR.
Note that clang usually crashes before emitting this diagnostic anyway
(see PR13984), so this change alone doesn't have an observable effect.
It makes the code more correct though.
llvm-svn: 165095
|
|
|
|
| |
llvm-svn: 165094
|
|
|
|
|
|
|
|
|
|
| |
This matches what's done in ItaniumMangle and makes it a bit easier
to implement mangling for more expressions. Also use the slightly nicer
"not yet implemented" error message from there.
No functionality change (except for the different error message).
llvm-svn: 165093
|
|
|
|
|
|
| |
This is done from MCSubTargetInfo these days.
llvm-svn: 165092
|
|
|
|
| |
llvm-svn: 165091
|
|
|
|
| |
llvm-svn: 165090
|
|
|
|
| |
llvm-svn: 165089
|
|
|
|
|
|
|
|
|
|
| |
some builds, on FreeBSD, Linux and Windows.
error: 'warning' diagnostics expected but not seen:
Line 94: types are incompatible
1 error generated.
llvm-svn: 165088
|
|
|
|
|
|
|
|
| |
ImportDecl's module ID was not written out and the reader accepted as module ID
the serialized:
Record.push_back(!IdentifierLocs.empty());
llvm-svn: 165087
|
|
|
|
|
|
| |
of a module file.
llvm-svn: 165086
|
|
|
|
| |
llvm-svn: 165085
|
|
|
|
|
|
| |
when an ImportDecl that was implicitly created due to an inclusion directive.
llvm-svn: 165084
|
|
|
|
| |
llvm-svn: 165083
|
|
|
|
|
|
|
|
| |
- General C++11 attributes were previously parsed and ignored. Now they are parsed and stored in AST.
- Add support to parse arguments of attributes that in 'gnu' namespace.
- Differentiate unknown attributes and known attributes that can't be applied to statements when emitting diagnostic.
llvm-svn: 165082
|
|
|
|
|
| |
FIXME: Also cygwin?
llvm-svn: 165081
|
|
|
|
|
|
|
|
|
|
| |
remove the duplicates of this code in ProcessGDBRemote and ProcessKDP.
These two Process plugins will hardcode their DynamicLoader name to be
the DynamicLoaderDarwinKernel so the correct DynamicLoader is picked,
and return the kernel load address as the ImageInfosAddress.
<rdar://problem/12417038>
llvm-svn: 165080
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In C++, overriding virtual methods are allowed to specify a covariant
return type -- that is, if the return type of the base method is an
object pointer type (or reference type), the overriding method's return
type can be a pointer to a subclass of the original type. The analyzer
was failing to take this into account when devirtualizing a method call,
and anything that relied on the return value having the proper type later
would crash.
In Objective-C, overriding methods are allowed to specify ANY return type,
meaning we can NEVER be sure that devirtualizing will give us a "safe"
return value. Of course, a program that does this will most likely crash
at runtime, but the analyzer at least shouldn't crash.
The solution is to check and see if the function/method being inlined is
the function that static binding would have picked. If not, check that
the return value has the same type. If the types don't match, see if we
can fix it with a derived-to-base cast (the C++ case). If we can't,
return UnknownVal to avoid crashing later.
<rdar://problem/12409977>
llvm-svn: 165079
|
|
|
|
|
|
|
|
|
| |
These functions are store-agnostic, and would benefit from information in
DynamicTypeInfo but gain nothing from the store type.
No intended functionality change.
llvm-svn: 165078
|
|
|
|
|
|
|
|
|
| |
Then, rename it getPointeeCXXRecordDecl and give it a nice doc comment,
and actually use it.
No intended functionality change.
llvm-svn: 165077
|
|
|
|
|
|
|
|
|
|
| |
most of the behavior we want, but wrap the predicate in one which erases
elements from the set if they pass the predicate. Oh what I wouldn't
give for a lambda here.
Let me know if the predicate wrapping is too much magic. ;]
llvm-svn: 165076
|
|
|
|
|
|
|
|
|
|
|
| |
Enable the pass by default for targets that request it, and change the
-enable-early-ifcvt to the opposite -disable-early-ifcvt.
There are still some x86 regressions when enabling early if-conversion
because of the missing machine models. Disable the pass for x86 until
machine models are added.
llvm-svn: 165075
|
|
|
|
|
|
|
| |
each one separately, process a stack of MemberExpr's as a single unit so that
static calls and member access will not be warned on.
llvm-svn: 165074
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
preserves the values of the relocated entries, unlikely remove_if. This
allows walking them and erasing them.
Also flesh out the predicate we are using for this to support the
various constraints actually imposed on a UnaryPredicate -- without this
we can't compose it with std::not1.
Thanks to Sean Silva for the review here and noticing the issue with
std::remove_if.
llvm-svn: 165073
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X86DAGToDAGISel::PreprocessISelDAG(), isel is moving load inside
callseq_start / callseq_end so it can be folded into a call. This can
create a cycle in the DAG when the call is glued to a copytoreg. We
have been lucky this hasn't caused too many issues because the pre-ra
scheduler has special handling of call sequences. However, it has
caused a crash in a specific tailcall case.
rdar://12393897
llvm-svn: 165072
|
|
|
|
|
|
|
| |
This reverts 165055 and 165052 temporarily while I look at debugger
failures.
llvm-svn: 165071
|