- Aug 28, 2012
-
-
Alexey Samsonov authored
llvm-svn: 162742
-
Bill Wendling authored
it here, then a 'register-memory' version would wrongly get the commutative flag. <rdar://problem/12180135> llvm-svn: 162741
-
Craig Topper authored
llvm-svn: 162740
-
Alexey Samsonov authored
llvm-svn: 162739
-
Craig Topper authored
llvm-svn: 162738
-
Rafael Espindola authored
Patch by Magee, Josh. llvm-svn: 162737
-
NAKAMURA Takumi authored
llvm-svn: 162736
-
Michael Liao authored
- Add a target-specific DAG optimization to recognize a pattern PTEST-able. Such a pattern is a OR'd tree with X86ISD::OR as the root node. When X86ISD::OR node has only its flag result being used as a boolean value and all its leaves are extracted from the same vector, it could be folded into an X86ISD::PTEST node. llvm-svn: 162735
-
Jakob Stoklund Olesen authored
Both single-instruction and multi-instruction patterns can be checked for missing mayLoad / mayStore, and hasSideEffects flags. llvm-svn: 162734
-
Jakob Stoklund Olesen authored
These extra flags are not required to properly order the atomic load/store instructions. SelectionDAGBuilder chains atomics as if they were volatile, and SelectionDAG::getAtomic() sets the isVolatile bit on the memory operands of all atomic operations. The volatile bit is enough to order atomic loads and stores during and after SelectionDAG. This means we set mayLoad on atomic_load, mayStore on atomic_store, and mayLoad+mayStore on the remaining atomic read-modify-write operations. llvm-svn: 162733
-
Jakob Stoklund Olesen authored
This wasn't the right way to enforce ordering of atomics. We are already setting the isVolatile bit on memory operands of atomic operations which is good enough to enforce the correct ordering. llvm-svn: 162732
-
Akira Hatanaka authored
Instructions emitted to compute branch offsets now use immediate operands instead of symbolic labels. This change was needed because there were problems when R_MIPS_HI16/LO16 relocations were used to make shared objects. llvm-svn: 162731
-
Dmitri Gribenko authored
llvm-svn: 162730
-
Hal Finkel authored
Slight reorganisation of PPC instruction classes for scheduling. No functionality change for existing subtargets. - Clearly separate load/store-with-update instructions from regular loads and stores. - Split IntRotateD -> IntRotateD and IntRotateDI - Split out fsub and fadd from FPGeneral -> FPAddSub - Update existing itineraries Patch by Tobias von Koch. llvm-svn: 162729
-
Akira Hatanaka authored
In SelectionDAGLegalize::ExpandLegalINT_TO_FP, expand INT_TO_FP nodes without using any f64 operations if f64 is not a legal type. Patch by Stefan Kristiansson. llvm-svn: 162728
-
Hal Finkel authored
Allow load-immediates to be rematerialised in the register coalescer for PPC. This makes test/CodeGen/PowerPC/big-endian-formal-args.ll fail, because it relies on a register move getting emitted. The immediate load is equivalent, so change this test case. Patch by Tobias von Koch. llvm-svn: 162727
-
Hal Finkel authored
Adds the vendor 'fsl' (used by Freescale SDK) to Triple. This will allow clang support for Freescale cross-compile configurations. Patch by Tobias von Koch. llvm-svn: 162726
-
Hal Finkel authored
The 32-bit ABI requires CR bit 6 to be set if the call has fp arguments and unset if it doesn't. The solution up to now was to insert a MachineNode to set/unset the CR bit, which produces a CR vreg. This vreg was then copied into CR bit 6. When the register allocator saw a bunch of these in the same function, it allocated the set/unset CR bit in some random CR register (1 extra instruction) and then emitted CR moves before every vararg function call, rather than just setting and unsetting CR bit 6 directly before every vararg function call. This patch instead inserts a PPCcrset/PPCcrunset instruction which are then matched by a dedicated instruction pattern. Patch by Tobias von Koch. llvm-svn: 162725
-
Hal Finkel authored
The zeroextend IR instruction is lowered to an 'and' node with an immediate mask operand, which in turn gets legalised to a sequence of ori's & ands. This can be done more efficiently using the rldicl instruction. Patch by Tobias von Koch. llvm-svn: 162724
-
Dmitri Gribenko authored
Should fix part 2 of PR13374. llvm-svn: 162723
-
Eric Christopher authored
llvm-svn: 162722
-
Dmitri Gribenko authored
llvm-svn: 162721
-
Jordan Rose authored
This helper function (in the clang::ento::bugreporter namespace) may add more than one visitor, but conceptually it's tracking a single use of a null or undefined value and should do so as best it can. Also, the BugReport parameter has been made a reference to underscore that it is non-optional. llvm-svn: 162720
-
Jordan Rose authored
As Anna pointed out to me offline, it's a little silly to walk backwards through the graph to find the store site when BugReporter will do the exact same walk as part of path diagnostic generation. llvm-svn: 162719
-
Jordan Rose authored
Previously, if we were tracking stores to a variable 'x', and came across this: x = foo(); ...we would simply emit a note here and stop. Now, we'll step into 'foo' and continue tracking the returned value from there. <rdar://problem/12114689> llvm-svn: 162718
-
Jordan Rose authored
The two callers are using this in order to be conservative, so let's just clarify the information that's actually being provided here. This is not related to inlining decisions in any way. No functionality change. llvm-svn: 162717
-
Chad Rosier authored
with FIXMEs for unimplemented features. No functional change intended. llvm-svn: 162716
-
Argyrios Kyrtzidis authored
if we have something like: @synthesize prop = _prop; and '_prop' is not declared, we will encounter a '_prop' ivar before encountering the 'prop' synthesize declaration and we will think that we passed the region-of-interest, missing the cursor for 'prop'. rdar://12172700 llvm-svn: 162715
-
Jakob Stoklund Olesen authored
llvm-svn: 162714
-
Jakob Stoklund Olesen authored
It is not safe to use normal LDR instructions because they may be reordered by the scheduler. The ATOMIC_LDR pseudos have a mayStore flag that prevents reordering. Atomic loads are also prevented from participating in rematerialization and load folding. llvm-svn: 162713
-
Chad Rosier authored
More work towards unifying asm stmt codegen. llvm-svn: 162712
-
Chad Rosier authored
llvm-svn: 162711
-
Chad Rosier authored
change intended. llvm-svn: 162710
-
Sebastian Pop authored
llvm-svn: 162707
-
Marshall Clow authored
Fix compile error when building with C++11 - clang thinks that PRIx64 is a user-defined suffix or something llvm-svn: 162704
-
Bill Wendling authored
<rdar://problem/12183003> llvm-svn: 162703
-
Benjamin Kramer authored
Suggested by Roman Divacky. llvm-svn: 162702
-
- Aug 27, 2012
-
-
Benjamin Kramer authored
This avoids emitting many dead GEPs for large zero-initialized arrays. llvm-svn: 162701
-
Matt Beaumont-Gay authored
llvm-svn: 162700
-
Chad Rosier authored
llvm-svn: 162699
-