- Jan 14, 2012
-
-
Douglas Gregor authored
we have a redeclarable type, and only use the new virtual versions (getPreviousDeclImpl() and getMostRecentDeclImpl()) when we don't have that type information. This keeps us from penalizing users with strict type information (and is the moral equivalent of a "final" method). Plus, settle on the names getPreviousDecl() and getMostRecentDecl() throughout. llvm-svn: 148187
-
Benjamin Kramer authored
To avoid malloc thrashing give OverloadCandidateSet an inline capacity for conversion sequences. We use the fact that OverloadCandidates never outlive the OverloadCandidateSet and have a fixed amount of conversion sequences. This eliminates the oversized SmallVector from OverloadCandidate shrinking it from 752 to 208 bytes. On the test case from the "Why is CLANG++ so freaking slow" thread on llvmdev this avoids one gig of vector reallocation (including memcpy) which translates into 5-10% speedup on Lion/x86_64. Overload candidate computation is still the biggest malloc contributor when compiling templated c++ code. llvm-svn: 148186
-
Benjamin Kramer authored
Replace push_back with addCandidate which will let us make use of the fixed size of the conversion sequence vector soon. llvm-svn: 148185
-
Douglas Gregor authored
virtual functions that provide previous/most recent redeclaration information for any declaration. Use this to eliminate the redundant, less efficient getPreviousDecl() functions. llvm-svn: 148184
-
Douglas Gregor authored
llvm-svn: 148183
-
Douglas Gregor authored
Add a FIXME for mutation of the common pointer of a RedeclarableTemplateDecl. It is not clear that it's worth delaying the allocation of said pointer llvm-svn: 148182
-
Douglas Gregor authored
Redeclarable<RedeclarableTemplateDecl>, eliminating a bunch of redeclaration-chain logic both in RedeclarableTemplateDecl and especially in its (de-)serialization. As part of this, eliminate the RedeclarableTemplate<> class template, which was an abstraction that didn't actually save anything. llvm-svn: 148181
-
Howard Hinnant authored
llvm-svn: 148180
-
Zhongxing Xu authored
llvm-svn: 148179
-
Richard Smith authored
APValue::Array and APValue::MemberPointer. All APValue values can now be emitted as constants. Add new CGCXXABI entry point for emitting an APValue MemberPointer. The other entrypoints dealing with constant member pointers are no longer necessary and will be removed in a later change. Switch codegen from using EvaluateAsRValue/EvaluateAsLValue to VarDecl::evaluateValue. This performs caching and deals with the nasty cases in C++11 where a non-const object's initializer can refer indirectly to previously-initialized fields within the same object. Building the intermediate APValue object incurs a measurable performance hit on pathological testcases with huge initializer lists, so we continue to build IR directly from the Expr nodes for array and record types outside of C++11. llvm-svn: 148178
-
Andrew Trick authored
Fixes PR11761: bad IR w/ redundant Phi elim llvm-svn: 148177
-
Anna Zaks authored
data. llvm-svn: 148176
-
Rafael Espindola authored
llvm-svn: 148175
-
Andrew Trick authored
llvm-svn: 148174
-
Andrew Trick authored
llvm-svn: 148173
-
Andrew Trick authored
llvm-svn: 148172
-
Andrew Trick authored
llvm-svn: 148171
-
Andrew Trick authored
llvm-svn: 148170
-
Argyrios Kyrtzidis authored
index parameters. llvm-svn: 148169
-
Evan Cheng authored
live across BBs before register allocation. This miscompiled 197.parser when a cmp + b are optimized to a cbnz instruction even though the CPSR def is live-in a successor. cbnz r6, LBB89_12 ... LBB89_12: ble LBB89_1 The fix consists of two parts. 1) Teach LiveVariables that some unallocatable registers might be liveouts so don't mark their last use as kill if they are. 2) ARM constantpool island pass shouldn't form cbz / cbnz if the conditional branch does not kill CPSR. rdar://10676853 llvm-svn: 148168
-
Chad Rosier authored
llvm-svn: 148167
-
Chad Rosier authored
llvm-svn: 148166
-
Jakob Stoklund Olesen authored
The hook returns a bit-mask of call-preserved registers that will eventually replace the current list of implicit defs on call instructions. This will make it possible to support multiple calling conventions without duplicating call instruction descriptors. The call-preserved mask is slightly different from the list returned by the getCalleeSavedRegs() hook, it includes all aliases that are preserved by calls. The hook takes a CallingConv::ID argument instead of a MachineFunction pointer, so it can provide information about calls to extern functions, and even indirect function calls. TRI::getCalleeSavedRegs() returns information about the function currently being compiled. TRI::getCallPreservedMask() returns information about the functions it is calling. llvm-svn: 148165
-
Dan Gohman authored
llvm-svn: 148164
-
Rafael Espindola authored
With that, centralize the way we merge visibility, always preferring explicit over implicit and then picking the most restrictive one. Fixes pr10113 and pr11690. llvm-svn: 148163
-
Chad Rosier authored
llvm-svn: 148162
-
Rafael Espindola authored
llvm-svn: 148161
-
Argyrios Kyrtzidis authored
that one wants indexing callbacks for function-local symbols as well. llvm-svn: 148160
-
Douglas Gregor authored
get added to the identifier chains as part of deserialization, because they should not be visible to name lookup. llvm-svn: 148159
-
Eli Friedman authored
Progress towards making isUsed() reflect whether a declaration is odr-used; don't set isUsed for local variables which are referenced in unevaluated contexts. Make other code use isReferenced() (which basically indicates that a declaration isn't dead) where appropriate. I was forced to change test/SemaCXX/linkage.cpp because we aren't actually modeling extern "C" in the AST the way that testcase expects; we were not printing a warning only because we skipped the relevant check. Someone who actually understands the semantics here should fix that. llvm-svn: 148158
-
-
Rafael Espindola authored
llvm-svn: 148156
-
Kaelyn Uhrain authored
The change to SemaTemplateVariadic.cpp improves the typo correction results in certain situations, while the change to SemaTemplate.cpp does not change existing behavior. llvm-svn: 148155
-
Douglas Gregor authored
multiple name lookup results in C/Objective-C. Fixes a regression a caused in r147533, found by Enea Zaffanella! llvm-svn: 148154
-
Howard Hinnant authored
A bug fix involving the updating of path_dst_ptr_to_static_ptr. Some minor code rearrangement optimizations (putting most likely 'if' first in an if-else series. And some major optimizations which involve stopping the search prior to an exhaustive walk over the entire tree. Some of these stops are because an ambiguity is detected earlier. And some of the short circuiting is due to the information from the bits __diamond_shaped_mask and __non_diamond_repeat_mask. The stress test checked in last night is now about 28% faster for the B<Width/2, Depth> -O3 case. I'm still playing with some more optimization possibilities but I'm not sure they will play out. llvm-svn: 148153
-
- Jan 13, 2012
-
-
Sean Callanan authored
master AST importer imports types. - First, before importing the definition of a Decl from its source, notify the underlying importer of the source->destination mapping. Especially for anonymous strucutres that are otherwise hard to unique in the target AST context, this hint is very helpful. - When deporting a type or Decl from one ASTContext to another (deporting occurs in the case of moving result types from the parser's AST context to the result AST context), don't forget their origin if the origin is the original debug information. llvm-svn: 148152
-
Jakob Stoklund Olesen authored
The QQ and QQQQ registers are not 'real', they are pseudo-registers used to model some vld and vst instructions. This makes the call clobber lists longer, but I intend to get rid of those soon. llvm-svn: 148151
-
Rafael Espindola authored
llvm-svn: 148150
-
Eli Friedman authored
llvm-svn: 148149
-
Douglas Gregor authored
framework is actually a subframework within a top-level framework. If so, only infer a module for the top-level framework and then dig out the appropriate submodule. This helps us cope with an amusing subframeworks anti-pattern, where one uses -F <framework>/Frameworks to get direct include access to the subframeworks of a framework (which otherwise would not be permitted). llvm-svn: 148148
-