- Jan 11, 2014
-
-
Eric Christopher authored
llvm-svn: 198980
-
Eric Christopher authored
llvm-svn: 198979
-
Eric Christopher authored
llvm-svn: 198978
-
Jason Molenda authored
llvm-svn: 198977
-
Jim Ingham authored
Get the breakpoint setting, and the Mac OS X DYLD trampolines and expression evaluator to handle Indirect symbols correctly. There were a couple of pieces to this. 1) When a breakpoint location finds itself pointing to an Indirect symbol, when the site for it is created it needs to resolve the symbol and actually set the site at its target. 2) Not all breakpoints want to do this (i.e. a straight address breakpoint should always set itself on the specified address, so somem machinery was needed to specify that. 3) I added some info to the break list output for indirect symbols so you could see what was happening. Also I made it clear when we re-route through re-exported symbols. 4) I moved ResolveIndirectFunction from ProcessPosix to Process since it works the exact same way on Mac OS X and the other posix systems. If we find a platform that doesn't do it this way, they can override the call in Process. 5) Fixed one bug in RunThreadPlan, if you were trying to run a thread plan after a "running" event had been broadcast, the event coalescing would cause you to miss the ThreadPlan running event. So I added a way to override the coalescing. 6) Made DynamicLoaderMacOSXDYLD::GetStepThroughTrampolinePlan handle Indirect & Re-exported symbols. <rdar://problem/15280639> llvm-svn: 198976
-
Warren Hunt authored
The presence of a VBPtr suppresses the presence of zero sized sub-objects in the non-virtual portion of the object in the context of determining if two base objects need alias-avoidance padding placed between them. Test cases included. llvm-svn: 198975
-
Rui Ueyama authored
llvm-svn: 198974
-
Diego Novillo authored
1- Use the line_iterator class to read profile files. 2- Allow comments in profile file. Lines starting with '#' are completely ignored while reading the profile. 3- Add parsing support for discriminators and indirect call samples. Our external profiler can emit more profile information that we are currently not handling. This patch does not add new functionality to support this information, but it allows profile files to provide it. I will add actual support later on (for at least one of these features, I need support for DWARF discriminators in Clang). A sample line may contain the following additional information: Discriminator. This is used if the sampled program was compiled with DWARF discriminator support (http://wiki.dwarfstd.org/index.php?title=Path_Discriminators). This is currently only emitted by GCC and we just ignore it. Potential call targets and samples. If present, this line contains a call instruction. This models both direct and indirect calls. Each called target is listed together with the number of samples. For example, 130: 7 foo:3 bar:2 baz:7 The above means that at relative line offset 130 there is a call instruction that calls one of foo(), bar() and baz(). With baz() being the relatively more frequent call target. Differential Revision: http://llvm-reviews.chandlerc.com/D2355 4- Simplify format of profile input file. This implements earlier suggestions to simplify the format of the sample profile file. The symbol table is not necessary and function profiles do not need to know the number of samples in advance. Differential Revision: http://llvm-reviews.chandlerc.com/D2419 llvm-svn: 198973
-
Diego Novillo authored
This adds a propagation heuristic to convert instruction samples into branch weights. It implements a similar heuristic to the one implemented by Dehao Chen on GCC. The propagation proceeds in 3 phases: 1- Assignment of block weights. All the basic blocks in the function are initial assigned the same weight as their most frequently executed instruction. 2- Creation of equivalence classes. Since samples may be missing from blocks, we can fill in the gaps by setting the weights of all the blocks in the same equivalence class to the same weight. To compute the concept of equivalence, we use dominance and loop information. Two blocks B1 and B2 are in the same equivalence class if B1 dominates B2, B2 post-dominates B1 and both are in the same loop. 3- Propagation of block weights into edges. This uses a simple propagation heuristic. The following rules are applied to every block B in the CFG: - If B has a single predecessor/successor, then the weight of that edge is the weight of the block. - If all the edges are known except one, and the weight of the block is already known, the weight of the unknown edge will be the weight of the block minus the sum of all the known edges. If the sum of all the known edges is larger than B's weight, we set the unknown edge weight to zero. - If there is a self-referential edge, and the weight of the block is known, the weight for that edge is set to the weight of the block minus the weight of the other incoming edges to that block (if known). Since this propagation is not guaranteed to finalize for every CFG, we only allow it to proceed for a limited number of iterations (controlled by -sample-profile-max-propagate-iterations). It currently uses the same GCC default of 100. Before propagation starts, the pass builds (for each block) a list of unique predecessors and successors. This is necessary to handle identical edges in multiway branches. Since we visit all blocks and all edges of the CFG, it is cleaner to build these lists once at the start of the pass. Finally, the patch fixes the computation of relative line locations. The profiler emits lines relative to the function header. To discover it, we traverse the compilation unit looking for the subprogram corresponding to the function. The line number of that subprogram is the line where the function begins. That becomes line zero for all the relative locations. llvm-svn: 198972
-
Tom Roeder authored
llvm-svn: 198971
-
Filipe Cabecinhas authored
llvm-svn: 198970
-
- Jan 10, 2014
-
-
Roman Divacky authored
llvm-svn: 198969
-
Jim Ingham authored
llvm-svn: 198968
-
Jim Ingham authored
The actual indirect symbol is not the one at the address of the Trie entry marked with the EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER, it is given in the address in the “other” field in that entry. llvm-svn: 198967
-
Tom Roeder authored
llvm-svn: 198966
-
Tom Roeder authored
is needed for LLVMgold to load in ld. llvm-svn: 198965
-
Greg Clayton authored
Revert to getting a random port and sending that down to debugserver for iOS. The sandboxing is not letting debugserver reverse connect back to lldb. <rdar://problem/15789865> llvm-svn: 198963
-
Greg Clayton authored
llvm-svn: 198962
-
Greg Clayton authored
llvm-svn: 198961
-
Rafael Espindola authored
llvm-svn: 198960
-
Rafael Espindola authored
llvm-svn: 198959
-
Rafael Espindola authored
llvm-svn: 198958
-
Rafael Espindola authored
llvm-svn: 198957
-
Richard Smith authored
Warning for a duplicate 'constexpr' specifier. llvm-svn: 198956
-
Rafael Espindola authored
llvm-svn: 198955
-
Duncan P. N. Exon Smith authored
llvm-svn: 198954
-
Jordan Rose authored
...by synthesizing their body to be "return self->_prop;", with an extra nudge to RetainCountChecker to still treat the value as +0 if we have no other information. This doesn't handle weak properties, but that's mostly correct anyway, since they can go to nil at any time. This also doesn't apply to properties whose implementations we can't see, since they may not be backed by an ivar at all. And finally, this doesn't handle properties of C++ class type, because we can't invoke the copy constructor. (Sema has actually done this work already, but the AST it synthesizes is one the analyzer doesn't quite handle -- it has an rvalue DeclRefExpr.) Modeling setters is likely to be more difficult (since it requires handling strong/copy), but not impossible. <rdar://problem/11956898> llvm-svn: 198953
-
Fariborz Jahanian authored
which may belong to unrelated classes. It was primarily intended for miuse of @selector expression. But warning is too noisy and will be issued when an actual @selector is used. // rdar://15740134 llvm-svn: 198952
-
Arnold Schwaighofer authored
for (i = 0; i < N; ++i) A[i * Stride1] += B[i * Stride2]; We take loops like this and check that the symbolic strides 'Strided1/2' are one and drop to the scalar loop if they are not. This is currently disabled by default and hidden behind the flag 'enable-mem-access-versioning'. radar://13075509 llvm-svn: 198950
-
Arnold Schwaighofer authored
An upcoming loop vectorizer commit will want to replace a SCEVUnknown(Value*) by a SCEVConstant. This commit modifies the SCEVParameterRewriter to support this. The SCEVParameterRewriter constructor can optionally specify to follow this behavior. llvm-svn: 198949
-
Artyom Skrobov authored
Amending test/MC/ARM/thumb2-mclass.s to match its apparent original purpose (to test the ARMv6M/ARMv7M commonality), and creating a new test case for the differences between ARMv6M and ARMv7M llvm-svn: 198946
-
Artyom Skrobov authored
llvm-svn: 198945
-
Saleem Abdulrasool authored
The disassembler would no longer be able to disambiguage between the two variants (explicit immediate #0 vs implicit, omitted #0) for the ldrt, strt, ldrbt, strbt mnemonics as both versions indicated the disassembler routine. llvm-svn: 198944
-
Jakob Stoklund Olesen authored
Don't repeat the 32 <-> 64 architecture mapping incompletely. llvm-svn: 198943
-
Alp Toker authored
With this change tok::code_completion is finally handled exclusively as a special token kind like other tokens that need special treatment. All callers have been updated to use the specific token consumption methods and the parser has a clear idea the current token isn't special by the time ConsumeToken() gets called, so this has been unreachable for some time. ConsumeAnyToken() behaviour is unchanged and will continue to support unexpected code completion as part of the special token path. This survived an amount of fuzzing and validation, but please ping the list if you hit a code path that previously relied on the old unexpected handler and now asserts. llvm-svn: 198942
-
Kristof Beyls authored
llvm-svn: 198941
-
Kristof Beyls authored
llvm-svn: 198940
-
Rafael Espindola authored
This change was requested to avoid confusion if we ever support non windows coff systems. llvm-svn: 198939
-
Rafael Espindola authored
This change was requested to avoid confusion if we ever support non windows coff systems. llvm-svn: 198938
-
Kristof Beyls authored
llvm-svn: 198937
-