- Dec 19, 2010
-
-
Chris Lattner authored
which doesn't affect the memory address being promoted. llvm-svn: 122172
-
Chris Lattner authored
does not make the alias set for that pointer volatile, just stores *to* the pointer. llvm-svn: 122171
-
Chris Lattner authored
isel is *required* to split the edge. PHI values get evaluated on the edge, not in their predecessor block. llvm-svn: 122170
-
Chris Lattner authored
llvm-svn: 122168
-
Chris Lattner authored
which have trapping constant exprs in them due to PHI nodes. Eliminating them can cause the constant expr to be evalutated on new paths if the input edges are critical. llvm-svn: 122164
-
Chris Lattner authored
is enabled. llvm-svn: 122163
-
- Dec 18, 2010
-
-
Anton Korobeynikov authored
It turns out that ppc backend has really weird interdependencies over different hooks and all stuff is fragile wrt small changes. This should fix PR8749 llvm-svn: 122155
-
Benjamin Kramer authored
Just rename the functions, relying on matching a instruction that has the same name as a symbol is way too fragile. llvm-svn: 122154
-
Benjamin Kramer authored
llvm-svn: 122153
-
Roman Divacky authored
This fixed 8615. llvm-svn: 122150
-
Rafael Espindola authored
of two symbols in the same fragment. llvm-svn: 122145
-
Rafael Espindola authored
llvm-svn: 122124
-
Bob Wilson authored
The result vector elements are always integers. Radar 8782191. llvm-svn: 122112
-
Nate Begeman authored
Add vector versions of some existing scalar transforms to aid codegen in matching psign & pblend operations to the IR produced by clang/gcc for their C idioms. llvm-svn: 122105
-
Bill Wendling authored
may be called. If the entry block is empty, the insertion point iterator will be the "end()" value. Calling ->getParent() on it (among others) causes problems. Modify materializeFrameBaseRegister to take the machine basic block and insert the frame base register at the beginning of that block. (It's very similar to what the code does all ready. The only difference is that it will always insert at the beginning of the entry block instead of after a previous materialization of the frame base register. I doubt that that matters here.) <rdar://problem/8782198> llvm-svn: 122104
-
Bob Wilson authored
BUILD_VECTOR operands where the element type is not legal. I had previously changed this code to insert TRUNCATE operations, but that was just wrong. llvm-svn: 122102
-
Bob Wilson authored
llvm-svn: 122101
-
- Dec 17, 2010
-
-
Nate Begeman authored
Remove unnecessary pandn patterns, 'vnot' patfrag looks through bitcasts llvm-svn: 122098
-
Dale Johannesen authored
code for the case where 32-bit divide by constant is turned into 64-bit multiply by constant. 8771012. llvm-svn: 122090
-
Owen Anderson authored
Reapply r121905 (automatic synthesis of @llvm.sadd.with.overflow) with a fix for a bug that manifested itself on the DragonEgg self-host bot. Unfortunately, the testcase is pretty messy and doesn't reduce well due to interactions with other parts of InstCombine. llvm-svn: 122072
-
Benjamin Kramer authored
llvm-svn: 122054
-
Kalle Raiskila authored
Patch (slightly modified) by Visa Putkinen. llvm-svn: 122052
-
Chris Lattner authored
comparisons formed by comparisons. For example, this: void foo(unsigned x) { if (x == 0 || x == 1 || x == 3 || x == 4 || x == 6) bar(); } compiles into: _foo: ## @foo ## BB#0: ## %entry cmpl $6, %edi ja LBB0_2 ## BB#1: ## %entry movl %edi, %eax movl $91, %ecx btq %rax, %rcx jb LBB0_3 instead of: _foo: ## @foo ## BB#0: ## %entry cmpl $2, %edi jb LBB0_4 ## BB#1: ## %switch.early.test cmpl $6, %edi ja LBB0_3 ## BB#2: ## %switch.early.test movl %edi, %eax movl $88, %ecx btq %rax, %rcx jb LBB0_4 This catches a bunch of cases in GCC, which look like this: %804 = load i32* @which_alternative, align 4, !tbaa !0 %805 = icmp ult i32 %804, 2 %806 = icmp eq i32 %804, 3 %or.cond121 = or i1 %805, %806 %807 = icmp eq i32 %804, 4 %or.cond124 = or i1 %or.cond121, %807 br i1 %or.cond124, label %.thread, label %808 turning this into a range comparison. llvm-svn: 122045
-
Daniel Dunbar authored
IsSymbolRefDifferenceFullyResolved(). For example, we will now fold away something like: -- _a: ... L0: ... L1: ... .long (L1 - L0) / 2 -- llvm-svn: 122043
-
Bob Wilson authored
Radar 8776599 llvm-svn: 122018
-
Dan Gohman authored
a null endptr argument, because they may write to errno. This fixes a seflhost miscompile observed on Linux targets when TBAA was enabled. llvm-svn: 122014
-
Rafael Espindola authored
llvm-svn: 122006
-
- Dec 16, 2010
-
-
Rafael Espindola authored
llvm-svn: 122005
-
Duncan Sands authored
dragonegg self-host buildbot. Original commit message: Add an InstCombine transform to recognize instances of manual overflow-safe addition (performing the addition in a wider type and explicitly checking for overflow), and fold them down to intrinsics. This currently only supports signed-addition, but could be generalized if someone works out the magic constant formulas for other operations. llvm-svn: 121965
-
Jason W Kim authored
2. Fixed EmitLocalCommonSymbol for ELF (Yes, they exist. :) Test added. llvm-svn: 121951
-
Dan Gohman authored
llvm-svn: 121945
-
Dan Gohman authored
llvm-svn: 121944
-
Jason W Kim authored
llvm-svn: 121927
-
Dan Gohman authored
llvm-svn: 121921
-
Jim Grosbach authored
Canonicalize on tLDRpci and remove tLDRcp. llvm-svn: 121920
-
Eric Christopher authored
llvm-svn: 121919
-
- Dec 15, 2010
-
-
Owen Anderson authored
(performing the addition in a wider type and explicitly checking for overflow), and fold them down to intrinsics. This currently only supports signed-addition, but could be generalized if someone works out the magic constant formulas for other operations. Fixes <rdar://problem/8558713>. llvm-svn: 121905
-
Evan Cheng authored
llvm-svn: 121903
-
Bob Wilson authored
Clang is now providing intrinsics for these and so we need to support them in the backend. Radar 8068427. llvm-svn: 121902
-
Bob Wilson authored
llvm-svn: 121901
-