- May 16, 2013
-
-
Akira Hatanaka authored
llvm-svn: 182035
-
Jakob Stoklund Olesen authored
This lane mask provides information about which register lanes completely cover super-registers. See the block comment before getCoveringLanes(). llvm-svn: 182034
-
Rui Ueyama authored
llvm-svn: 182033
-
Ulrich Weigand authored
[PowerPC] Use true offset value in "memrix" machine operands This is the second part of the change to always return "true" offset values from getPreIndexedAddressParts, tackling the case of "memrix" type operands. This is about instructions like LD/STD that only have a 14-bit field to encode immediate offsets, which are implicitly extended by two zero bits by the machine, so that in effect we can access 16-bit offsets as long as they are a multiple of 4. The PowerPC back end currently handles such instructions by carrying the 14-bit value (as it will get encoded into the actual machine instructions) in the machine operand fields for such instructions. This means that those values are in fact not the true offset, but rather the offset divided by 4 (and then truncated to an unsigned 14-bit value). Like in the case fixed in r182012, this makes common code operations on such offset values not work as expected. Furthermore, there doesn't really appear to be any strong reason why we should encode machine operands this way. This patch therefore changes the encoding of "memrix" type machine operands to simply contain the "true" offset value as a signed immediate value, while enforcing the rules that it must fit in a 16-bit signed value and must also be a multiple of 4. This change must be made simultaneously in all places that access machine operands of this type. However, just about all those changes make the code simpler; in many cases we can now just share the same code for memri and memrix operands. llvm-svn: 182032
-
Rui Ueyama authored
llvm-svn: 182031
-
Daniel Malea authored
- resolves llvm.org/pr14806 Patch by Matthew Sorrels! llvm-svn: 182030
-
David Fang authored
llvm-svn: 182029
-
Sean Callanan authored
regions that aren't actually allocated in the process. This cache is used by the expression parser if the underlying process doesn't support memory allocation, to avoid needless repeated searches for unused address ranges. Also fixed a silly bug in IRMemoryMap where it would continue searching even after it found a valid region. <rdar://problem/13866629> llvm-svn: 182028
-
Howard Hinnant authored
Glen: This patch gets the string conversion functions working on Windows. It also refactors repetitive code in string.cpp do greatly reduce the repetitiveness, increasing maintainability. llvm-svn: 182026
-
rdar://problem/13891604Greg Clayton authored
Fixed a 2 second delay when sending the 'k' (kill) packet that happened due to a race condition. llvm-svn: 182025
-
Daniel Jasper authored
This ensures that we format: void longFunctionName { } // long comment here And not: void longFunctionName {} // long comment here As requested in post-commit-review. llvm-svn: 182024
-
Hal Finkel authored
On PPC32, i64 FP conversions are implemented using runtime calls (which clobber the counter register). These must be excluded. llvm-svn: 182023
-
Rafael Espindola authored
llvm-svn: 182022
-
Rafael Espindola authored
llvm-svn: 182021
-
Bill Schmidt authored
While testing some experimental code to add vector-scalar registers to PowerPC, I noticed that a couple of independent instructions were flipped by the scheduler. The new CHECK-DAG support is perfect for avoiding this problem. llvm-svn: 182020
-
Rafael Espindola authored
llvm-svn: 182019
-
Aaron Ballman authored
llvm-svn: 182018
-
Rafael Espindola authored
llvm-svn: 182017
-
Rafael Espindola authored
Without a PROLOG_LABEL present, the cfi instructions are never printed. llvm-svn: 182016
-
Daniel Jasper authored
llvm-svn: 182015
-
Edwin Vane authored
The recent improvement to the Use Nullptr Transform for macro arg expansions wasn't testing that only allowed NULL macros used in macro args can be transformed. This revision replaces a TODO to that effect. Fixes PR15955. llvm-svn: 182014
-
Edwin Vane authored
Several free functions related to macro arg testing are being moved into CastSequenceVisitor to facilitate upcoming fix. llvm-svn: 182013
-
Ulrich Weigand authored
[PowerPC] Report true displacement value from getPreIndexedAddressParts DAGCombiner::CombineToPreIndexedLoadStore calls a target routine to decompose a memory address into a base/offset pair. It expects the offset (if constant) to be the true displacement value in order to perform optional additional optimizations; in particular, to convert other uses of the original pointer into uses of the new base pointer after pre-increment. The PowerPC implementation of getPreIndexedAddressParts, however, simply calls SelectAddressRegImm, which returns a TargetConstant. This value is appropriate for encoding into the instruction, but it is not always usable as true displacement value: - Its type is always MVT::i32, even on 64-bit, where addresses ought to be i64 ... this causes the optimization to simply always fail on 64-bit due to this line in DAGCombiner: // FIXME: In some cases, we can be smarter about this. if (Op1.getValueType() != Offset.getValueType()) { - Its value is truncated to an unsigned 16-bit value if negative. This causes the above opimization to generate wrong code. This patch fixes both problems by simply returning the true displacement value (in its original type). This doesn't affect any other user of the displacement. llvm-svn: 182012
-
Rafael Espindola authored
llvm-svn: 182011
-
Alexander Potapenko authored
llvm-svn: 182010
-
Rafael Espindola authored
I am about to refactor the calls to addFrameMove and some of the ppc ones were not being tested. llvm-svn: 182009
-
Alexander Potapenko authored
llvm-svn: 182008
-
Richard Sandiford authored
llvm-svn: 182007
-
Kostya Serebryany authored
llvm-svn: 182006
-
Kostya Serebryany authored
[asan] symbolize when possible, even if ASAN_SYMBOLIZER_PATH is not provided. On Linux this will use dl_iterate_phdr instead of /proc/self/maps, even if the symbolizer is not installed llvm-svn: 182005
-
Evgeniy Stepanov authored
llvm-svn: 182004
-
Daniel Jasper authored
llvm-svn: 182003
-
Sergey Matveev authored
llvm-svn: 182002
-
Daniel Jasper authored
llvm-svn: 182001
-
Daniel Jasper authored
This enables things like: for (int &v : vec) v *= 2; Enabled for Google style. llvm-svn: 182000
-
Benjamin Kramer authored
llvm-svn: 181999
-
Enea Zaffanella authored
Added testcase corresponding to PR15991. llvm-svn: 181998
-
Daniel Jasper authored
It turns out that several implementations go through the trouble of setting up a SourceManager and Lexer and abstracting this into a function makes usage easier. Also abstracts SourceManager-independent ranges out of tooling::Refactoring and provides a convenience function to create them from line ranges. llvm-svn: 181997
-
Daniel Jasper authored
Before: void f() {} void g() { } // comment After: void f() {} void g() {} // comment llvm-svn: 181996
-
Hans Wennborg authored
This addresses Richard's comment on r181880. llvm-svn: 181995
-