- Jul 04, 2011
-
-
Rafael Espindola authored
This fixes the issue noted in PR10251 where early tail dup of bbs with indirectbr would cause a bb to be duplicated into a loop preheader and then into its predecessors, creating phi nodes with identical operands just before register allocation. This helps with jsinterp.o size (__TEXT goes from 163568 to 126656) and a bit with performance 1.005x faster on sunspider (jits still enabled). The result on webkit with the jit disabled is more significant: 1.021x faster. llvm-svn: 134372
-
Rafael Espindola authored
HasIndirectbr variable to be just that. No functionality change. llvm-svn: 134371
-
Rafael Espindola authored
llvm-svn: 134370
-
Jakob Stoklund Olesen authored
A split point inserted in a block with a landing pad successor may be hoisted above the call to ensure that it dominates all successors. The code that handles the rest of the basic block must take this into account. I am not including a test case, it would be very fragile. PR10244 comes from building clang with exceptions enabled. llvm-svn: 134369
-
- Jul 03, 2011
-
-
Roman Divacky authored
This is what both the ABI and clang says. llvm-svn: 134367
-
Rafael Espindola authored
llvm-svn: 134364
-
- Jul 02, 2011
-
-
Duncan Sands authored
llvm-svn: 134323
-
Duncan Sands authored
is valid or not depends on which system you build. llvm-svn: 134321
-
Duncan Sands authored
llvm-svn: 134319
-
Rafael Espindola authored
llvm-svn: 134312
-
Jakob Stoklund Olesen authored
llvm-svn: 134311
-
Jakob Stoklund Olesen authored
asm.c:2:7: error: ran out of registers during register allocation asm(""::"r"(0), "r"(1), "r"(2), "r"(3), "r"(4), "r"(5), "r"(6), "r"(7), "r"(8), "r"(9)); ^ llvm-svn: 134310
-
Rafael Espindola authored
register number. llvm-svn: 134309
-
Jakob Stoklund Olesen authored
Add a MI->emitError() method that the backend can use to report errors related to inline assembly. Call it from X86FloatingPoint.cpp when the constraints are wrong. This enables proper clang diagnostics from the backend: $ clang -c pr30848.c pr30848.c:5:12: error: Inline asm output regs must be last on the x87 stack __asm__ ("" : "=u" (d)); /* { dg-error "output regs" } */ ^ 1 error generated. llvm-svn: 134307
-
Andrew Trick authored
llvm-svn: 134306
-
Jakob Stoklund Olesen authored
Every live range is assigned a cascade number the first time it is involved in an eviction. As the evictor, it gets a new cascade number. Every evictee is assigned the same cascade number as the evictor. Eviction is prohibited if the evictor has a lower assigned cascade number than the evictee. This means that assigned cascade numbers are monotonically increasing with every eviction, yet they are bounded by NextCascade which can only be incremented by new live ranges. Thus, infinite loops cannot happen, but eviction cascades can still be triggered by new live ranges as we want. Thanks to Andy for explaining this to me. llvm-svn: 134303
-
Evan Cheng authored
llvm-svn: 134298
-
Cameron Zwarich authored
llvm-svn: 134287
-
Eric Christopher authored
up the valid constant check earlier. rdar://9692967 llvm-svn: 134286
-
Douglas Gregor authored
llvm-svn: 134282
-
Evan Cheng authored
llvm-svn: 134281
-
Evan Cheng authored
llvm-svn: 134279
-
Dan Gohman authored
outside the loop and reducible. This more completely hides them from LSR, which isn't usually able to do anything meaningful with non-affine expressions anyway, and this consequently hides them from SCEVExpander, which is acutely unprepared for non-affine expressions. Replace test/CodeGen/X86/lsr-nonaffine.ll with a new test that tests the new behavior. This works around the bug in PR10117 / rdar://problem/9633149, and is generally an improvement besides. llvm-svn: 134268
-
- Jul 01, 2011
-
-
Owen Anderson authored
Generalize @llvm.ctlz, @llvm.cttz, and @llvm.ctpop to work on vectors of integers, and fix the one optimization pass that I'm aware of that needs updating for this. At least one current target, ARM NEON, can implement these operations on vectors directly. llvm-svn: 134265
-
Eli Friedman authored
llvm-svn: 134264
-
Jim Grosbach authored
The DSP instructions in the Thumb2 instruction set are an optional extension in the Cortex-M* archtitecture. When present, the implementation is considered an "ARMv7E-M implementation," and when not, an "ARMv7-M implementation." Add a subtarget feature hook for the v7e-m instructions and hook it up. The cortex-m3 cpu is an example of a v7m implementation, while the cortex-m4 is a v7e-m implementation. rdar://9572992 llvm-svn: 134261
-
Evan Cheng authored
llvm-svn: 134259
-
Evan Cheng authored
itineraries. - Refactor TargetSubtarget to be based on MCSubtargetInfo. - Change tablegen generated subtarget info to initialize MCSubtargetInfo and hide more details from targets. llvm-svn: 134257
-
Jim Grosbach authored
(low two bits always zero, so off by one bit of encoded value). llvm-svn: 134247
-
Evan Cheng authored
llvm-svn: 134244
-
Jim Grosbach authored
t2MOVCC[ri] are just t2MOV[ri] instructions, so properly pseudo-ize them. The Thumb1 versions, tMOVCC[ri] were only present for use by the size- reduction pass, so they're no longer necessary at all and can be deleted. llvm-svn: 134242
-
Evan Cheng authored
llvm-svn: 134240
-
Duncan Sands authored
copy is a kill") to see if it fixes the i386 dragonegg buildbot, which is timing out because gcc built with dragonegg is going into an infinite loop. llvm-svn: 134237
-
Francois Pichet authored
llvm-svn: 134236
-
Nick Lewycky authored
llvm-svn: 134235
-
Rafael Espindola authored
llvm-svn: 134234
-
Rafael Espindola authored
llvm-svn: 134231
-
Rafael Espindola authored
llvm-svn: 134229
-
Rafael Espindola authored
llvm-svn: 134228
-
Jakob Stoklund Olesen authored
The constraints are represented by the register class of the original virtual register created for the inline asm. If the register class were included in the operand descriptor, we might be able to do this. For now, just give up on regclass inflation when inline asm is involved. No test case, this bug hasn't happened yet. llvm-svn: 134226
-