- May 11, 2011
-
-
Jakob Stoklund Olesen authored
about to be spilled. This can only happen when two extra snippet registers are included in the spill, and there is a copy between them. Hoisting the spill creates problems because the hoist will mark the copy for later dead code elimination, and spilling the second register will turn the copy into a spill. <rdar://problem/9420853> llvm-svn: 131192
-
Nadav Rotem authored
Fixes a bug in the DAGCombiner. LoadSDNodes have two values (data, chain). If there is a store after the load node, then there is a chain, which means that there is another user. Thus, asking hasOneUser would fail. Instead we ask hasNUsesOfValue on the 'data' value. llvm-svn: 131183
-
Rafael Espindola authored
to provide a reduced testcase. llvm-svn: 131176
-
Bill Wendling authored
intrinsic call. This prevents it from being reordered so that it appears *before* the setjmp intrinsic (thus making it completely useless). <rdar://problem/9409683> llvm-svn: 131174
-
Evan Cheng authored
at the start of basic blocks to their common predecessor. It's actually quite common (e.g. about 50 times in JM/lencod) and has shown to be a nice code size benefit. e.g. pushq %rax testl %edi, %edi jne LBB0_2 ## BB#1: xorb %al, %al popq %rdx ret LBB0_2: xorb %al, %al callq _foo popq %rdx ret => pushq %rax xorb %al, %al testl %edi, %edi je LBB0_2 ## BB#1: callq _foo LBB0_2: popq %rdx ret rdar://9145558 llvm-svn: 131172
-
- May 10, 2011
-
-
Rafael Espindola authored
llvm-svn: 131157
-
-
Stuart Hastings authored
test case; I've only seen this on a release branch, and I can't get it to reproduce on trunk. rdar://problem/7662569 llvm-svn: 131152
-
Rafael Espindola authored
llvm-svn: 131151
-
Rafael Espindola authored
DwarfRequiresRelocationForSectionOffset as this is not specific to StmtList. llvm-svn: 131148
-
Rafael Espindola authored
this clang will use .debug_frame in, for example, clang -g -c -m32 test.c This matches gcc's behaviour. It looks like .debug_frame is a bit bigger than .eh_frame, but has the big advantage of not being allocated. llvm-svn: 131140
-
Jakob Stoklund Olesen authored
The previous invalidation missed the alias interference caches. Also add a stats counter for the number of repaired ranges. llvm-svn: 131133
-
Devang Patel authored
llvm-svn: 131106
-
- May 09, 2011
-
-
Eric Christopher authored
Patch by Evan Cheng. llvm-svn: 131093
-
Duncan Sands authored
llvm-svn: 131082
-
- May 08, 2011
-
-
Jakob Stoklund Olesen authored
It can happen that a live debug variable is the last use of a sub-register, and the register allocator will pick a larger register class for the virtual register. If the allocated register doesn't support the sub-register index, just use %noreg for the debug variables instead of asserting. In PR9872, a debug variable ends up in the sub_8bit_hi part of a GR32_ABCD register. The register is split and one part is inflated to GR32 and assigned %ESI because there are no more normal uses of sub_8bit_hi. Since %ESI doesn't have that sub-register, substPhysReg asserted. Now it will simply insert a %noreg instead, and the debug variable will be marked unavailable in that range. We don't currently have a way of saying: !"value" is in bits 8-15 of %ESI, I don't know if DWARF even supports that. llvm-svn: 131073
-
- May 06, 2011
-
-
Jakob Stoklund Olesen authored
This can't be just an assertion, users can always write impossible inline assembly. Such an assembly statement should be included in the error message. llvm-svn: 131024
-
Andrew Trick authored
llvm-svn: 131022
-
Evan Cheng authored
llvm-svn: 131015
-
Eli Friedman authored
llvm-svn: 131012
-
Eli Friedman authored
llvm-svn: 131008
-
Jakob Stoklund Olesen authored
This should unbreak dragonegg-i386-linux and build-self-4-mingw32. llvm-svn: 131007
-
Andrew Trick authored
llvm-svn: 131001
-
Jakob Stoklund Olesen authored
After a virtual register is split, update any debug user variables that resided in the old register. This ensures that the LiveDebugVariables are still correct after register allocation. This may create DBG_VALUE instructions that place a user variable in a register in parts of the function and in a stack slot in other parts. DwarfDebug currently doesn't support that. llvm-svn: 130998
-
Jakob Stoklund Olesen authored
llvm-svn: 130997
-
Jakob Stoklund Olesen authored
llvm-svn: 130996
-
Andrew Trick authored
The post-ra scheduler was explicitly updating the depth of a node's successors after scheduling it, regardless of whether the successor was ready. This is quadratic for DAGs with transitively redundant edges. I simply removed the useless update of depth, which is lazilly computed later. Fixes <rdar://problem/9044332> compiler takes way too long to build TextInput. llvm-svn: 130992
-
Devang Patel authored
Move CompileUnit::getOrCreateNameSpace() and CompileUnit::addPubType() from DwarfDebug.cpp to DwarfCompileUnit.cpp llvm-svn: 130991
-
Rafael Espindola authored
llvm-svn: 130989
-
Rafael Espindola authored
llvm-svn: 130988
-
Rafael Espindola authored
llvm-svn: 130987
-
Rafael Espindola authored
llvm-svn: 130985
-
Rafael Espindola authored
llvm-svn: 130984
-
Eli Friedman authored
possibly related to cbnz formation. llvm-svn: 130977
-
Rafael Espindola authored
llvm-svn: 130964
-
Rafael Espindola authored
llvm-svn: 130959
-
Devang Patel authored
llvm-svn: 130955
-
- May 05, 2011
-
-
Rafael Espindola authored
llvm-svn: 130947
-
Rafael Espindola authored
llvm-svn: 130944
-
Andrew Trick authored
BuildSchedGraph was quadratic in the number of calls in the basic block. After this fix, it keeps only a single call at the top of the DefList so compile time doesn't blow up on large blocks. This reduces postRA sched time on an external test case from 81s to 0.3s. Although r130800 (reduced ARM register alias defs) also partially fixes the issue by reducing the constant overhead of checking call interference by an order of magnitude. Fixes <rdar://problem/7662664> very poor compile time with post RA scheduling. llvm-svn: 130943
-