- Aug 23, 2010
-
-
Devang Patel authored
PR 7920. llvm-svn: 111820
-
Owen Anderson authored
Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API. llvm-svn: 111815
-
Chandler Carruth authored
hierarchy with virtual methods and using llvm_unreachable to properly indicate unreachable states which would otherwise leave variables uninitialized. llvm-svn: 111803
-
- Aug 21, 2010
-
-
Eli Friedman authored
llvm-svn: 111744
-
Bill Wendling authored
It's similar to "linker_private_weak", but it's known that the address of the object is not taken. For instance, functions that had an inline definition, but the compiler decided not to inline it. Note, unlike linker_private and linker_private_weak, linker_private_weak_def_auto may have only default visibility. The symbols are removed by the linker from the final linked image (executable or dynamic library). llvm-svn: 111684
-
- Aug 20, 2010
-
-
Jim Grosbach authored
llvm-svn: 111673
-
Jim Grosbach authored
llvm-svn: 111670
-
Jim Grosbach authored
llvm-svn: 111646
-
Bob Wilson authored
it involves specific floating-point types, legalize should expand an extending load to a non-extending load followed by a separate extend operation. For example, we currently expand SEXTLOAD to EXTLOAD+SIGN_EXTEND_INREG (and assert that EXTLOAD should always be supported). Now we can expand that to LOAD+SIGN_EXTEND. This is needed to allow vector SIGN_EXTEND and ZERO_EXTEND to be used for NEON. llvm-svn: 111586
-
-
Evan Cheng authored
llvm-svn: 111575
-
Evan Cheng authored
llvm-svn: 111574
-
- Aug 19, 2010
-
-
Bill Wendling authored
llvm-svn: 111540
-
Evan Cheng authored
llvm-svn: 111537
-
Michael J. Spencer authored
The Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 implements parts of C++0x based on the draft standard. An old version of the draft had a bug that makes std::pair<T1*, T2*>(something, 0) fail to compile. This is because the template<class U, class V> pair(U&& x, V&& y) constructor is selected, even though it later fails to implicitly convert U and V to frist_type and second_type. This has been fixed in n3090, but it seems that Microsoft is not going to update msvc. llvm-svn: 111535
-
Evan Cheng authored
llvm-svn: 111531
-
Evan Cheng authored
llvm-svn: 111530
-
Jim Grosbach authored
base registers were required. This will allow for slightly better packing of the locals when alignment padding is necessary after callee saved registers. llvm-svn: 111508
-
Jim Grosbach authored
llvm-svn: 111453
-
Evan Cheng authored
If any def of a machine-sink candidate has local uses, it's obviously not safe to sink it to a successor block. This bug has been hidden because a later check for critical-edge disable these illegal optimizations. This patch should significantly reduce the amount of time spent on checking dominator information for obviously unsafe sinking. llvm-svn: 111450
-
Jim Grosbach authored
frame index reference to an object in the local block is seen, check if it's near enough to any previously allocaated base register to re-use. rdar://8277890 llvm-svn: 111443
-
- Aug 18, 2010
-
-
Jakob Stoklund Olesen authored
map discovers the iterated dominance frontier for free. llvm-svn: 111400
-
Jakob Stoklund Olesen authored
We must complete the DFS, otherwise we might miss needed phi-defs, and prematurely color live ranges with a non-dominating value. This is not a big deal since we get to color more of the CFG and the next mapValue call will be faster. llvm-svn: 111397
-
Jakob Stoklund Olesen authored
llvm-svn: 111394
-
Jakob Stoklund Olesen authored
LiveIntervalMap maps values from a parent LiveInterval to a child interval that is a strict subset. It will create phi-def values as needed to preserve the VNInfo SSA form in the child interval. This leads to an algorithm very similar to the one in SSAUpdaterImpl.h, but with enough differences that the code can't be reused: - We don't need to manipulate PHI instructions. - LiveIntervals have kills. - We have MachineDominatorTree. - We can use df_iterator. llvm-svn: 111393
-
Bill Wendling authored
llvm-svn: 111384
-
Jim Grosbach authored
Nothing fancy, just ask the target if any currently available base reg is in range for the instruction under consideration and use the first one that is. Placeholder ARM implementation simply returns false for now. ongoing saga of rdar://8277890 llvm-svn: 111374
-
Jakob Stoklund Olesen authored
llvm-svn: 111366
-
Jim Grosbach authored
the local block. Resolve references to those indices to a new base register. For simplification and testing purposes, a new virtual base register is allocated for each frame index being resolved. The result is truly horrible, but correct, code that's good for exercising the new code paths. Next up is adding thumb1 support, which should be very simple. Following that will be adding base register re-use and implementing a reasonable ARM heuristic for when a virtual base register should be generated at all. llvm-svn: 111315
-
Dale Johannesen authored
PR 7882. Follows suggestion by Amaury Pouly, thanks. llvm-svn: 111306
-
- Aug 17, 2010
-
-
Evan Cheng authored
PHI elimination shouldn't require machineloopinfo since it's used at -O0. Move the requirement to LiveIntervalAnalysis instead. Note this does not change the number of times machineloopinfo is computed. llvm-svn: 111285
-
Evan Cheng authored
llvm-svn: 111281
-
Jim Grosbach authored
llvm-svn: 111274
-
Jim Grosbach authored
whether to allocate a virtual frame base register to resolve the frame index reference in it. Implement a simple version for ARM to aid debugging. In LocalStackSlotAllocation, scan the function for frame index references to local frame indices and ask the target whether to allocate virtual frame base registers for any it encounters. Purely infrastructural for debug output. Next step is to actually allocate base registers, then add intelligent re-use of them. rdar://8277890 llvm-svn: 111262
-
Evan Cheng authored
Move the decision logic whether it's a good idea to split a critical edge to clients. Also fixed an erroneous check. An edge is only a back edge when the from and to blocks are in the same loop. llvm-svn: 111256
-
Evan Cheng authored
llvm-svn: 111250
-
Eric Christopher authored
llvm-svn: 111223
-
Evan Cheng authored
PHI elimination should not break back edge. It can cause some significant code placement issues. rdar://8263994 good: LBB0_2: mov r2, r0 . . . mov r1, r2 bne LBB0_2 bad: LBB0_2: mov r2, r0 . . . @ BB#3: mov r1, r2 b LBB0_2 llvm-svn: 111221
-
Jim Grosbach authored
llvm-svn: 111206
-
Jim Grosbach authored
mapping. Have the local block track its alignment requirement, and then apply that when the block itself is allocated. Previously, offsets could get adjusted in PEI to be different, relative to one another, than the block allocation thought they would be, which defeats the point of doing the allocation this way. Continuing rdar://8277890 llvm-svn: 111197
-