- Jul 31, 2013
-
-
Elena Demikhovsky authored
llvm-svn: 187493
-
Richard Sandiford authored
r186399 aggressively used the RISBG instruction for immediate ANDs, both because it can handle some values that AND IMMEDIATE can't, and because it allows the destination register to be different from the source. I realized later while implementing the distinct-ops support that it would be better to leave the choice up to convertToThreeAddress() instead. The AND IMMEDIATE form is shorter and is less likely to be cracked. This is a problem for 32-bit ANDs because we assume that all 32-bit operations will leave the high word untouched, whereas RISBG used in this way will either clear the high word or copy it from the source register. The patch uses the z196 instruction RISBLG for this instead. This means that z10 will be restricted to NILL, NILH and NILF for 32-bit ANDs, but I think that should be OK for now. Although we're using z10 as the base architecture, the optimization work is going to be focused more on z196 and zEC12. llvm-svn: 187492
-
Elena Demikhovsky authored
All insertf*/extractf* functions replaced with insert/extract since we have insertf and inserti forms. Added lowering for INSERT_VECTOR_ELT / EXTRACT_VECTOR_ELT for 512-bit vectors. Added lowering for EXTRACT/INSERT subvector for 512-bit vectors. Added a test. llvm-svn: 187491
-
Richard Sandiford authored
The next patch will make use of RISBLG for codegen. llvm-svn: 187490
-
Chandler Carruth authored
is that the command is quoted differently from the arguments. The command has '\' and the argument has '\\'. This is made unclear because FileCheck escapes the single matched '\' when it prints the contents of the variable, thus fooling me into thinking it had matched '\\' as intended. The solution is to bind the gcc_install variable in the argument list rather than out of the command. To do so we also have to be a bit more careful so that we don't get stray other things into the '.*' regex. Also, because of the argument difference, '\\\\' is the correct formulation before crtbegin, go back to that. llvm-svn: 187489
-
Chandler Carruth authored
replacing one variable with the regex. This won't fix anything, but will hopefully shed light on the nature of the failure. llvm-svn: 187488
-
Chandler Carruth authored
testcase. llvm-svn: 187487
-
Chandler Carruth authored
the path separator used when locating crtbegin.o. I'll watch the bots to see if there are other issues lurking here. llvm-svn: 187486
-
Evgeniy Stepanov authored
llvm-svn: 187485
-
Rui Ueyama authored
llvm-svn: 187484
-
NAKAMURA Takumi authored
llvm-svn: 187483
-
Richard Trieu authored
llvm-svn: 187482
-
Ariel J. Bernal authored
Added function for removing relative operators from input paths. llvm-svn: 187481
-
Ashok Thirumurthi authored
the extra check introduces 22 new test failures with the LLDB clang buildbot. Note that the unhandled DWARF_OP codes in DWARFExpression::Evaluate don't cause test failures if the check is ignored. llvm-svn: 187480
-
Andrew Trick authored
The heuristic that merges register pressure sets was bogus for ARM's S/D regs. llvm-svn: 187479
-
Andrew Trick authored
llvm-svn: 187478
-
Craig Topper authored
llvm-svn: 187477
-
Craig Topper authored
Changed register names (and pointer keywords) to be lower case when using Intel X86 assembler syntax. Patch by Richard Mitton. llvm-svn: 187476
-
Andrew Trick authored
This fix is very lightweight. The same fix already existed for AddRec but was missing for NAry expressions. This is obviously an improvement and I'm unsure how to test compile time problems. Patch by Xiaoyi Guo! llvm-svn: 187475
-
Aaron Ballman authored
llvm-svn: 187474
-
Jim Ingham authored
list have a shared pointer back to their DisassemblerLLVMC. This checkin force clears the InstructionList in all the places we use the DisassemblerSP to stop the leaking for now. I'll go back and fix this for real when I have time to do so. <rdar://problem/14581918> llvm-svn: 187473
-
Craig Topper authored
llvm-svn: 187472
-
Craig Topper authored
Patch by Richard Mitton. llvm-svn: 187471
-
Eric Christopher authored
For a testcase like the following: typedef unsigned long uint64_t; typedef struct { uint64_t lo; uint64_t hi; } blob128_t; void add_128_to_128(const blob128_t *in, blob128_t *res) { asm ("PAND %1, %0" : "+Q"(*res) : "Q"(*in)); } where we'll fail to allocate the register for the output constraint, our matching input constraint will not find a register to match, and could try to search past the end of the current operands array. On the idea that we'd like to attempt to keep compilation going to find more errors in the module, change the error cases when we're visiting inline asm IR to return immediately and avoid trying to create a node in the DAG. This leaves us with only a single error message per inline asm instruction, but allows us to safely keep going in the general case. llvm-svn: 187470
-
Akira Hatanaka authored
No functionality change. llvm-svn: 187469
-
Akira Hatanaka authored
No functionality change. llvm-svn: 187468
-
Richard Trieu authored
llvm-svn: 187467
-
Chandler Carruth authored
Clang when linking and using a GCC installation from a GCC cross-compiler. This was desired already by two special case platforms (Android and Mips), and turns out to be generally (if frustratingly) true. I've added a substantial comment to the code clarifying the underlying assumptions of doing actual cross compiles with Clang (or GCC for that matter!) and help avoid further confusion here. The end result is to realize that fully general form of PR12478 cannot be resolved while we support existing cross-compiling GCC toolchains, and linking with them (namely, linking against their libgcc and libstdc++ installs). GCC installs these target libraries under a target-specific prefix but one that may not be available within the actual sysroot in use. When linking in this world, GCC works and Clang should as well, but caveat emptor: DSOs from this tree must be replicated and rpath-fixed to be found at runtime within the sysroot. I've extended the cross compile test cases to cover these issues by pointing them at a sysroot and actually checking the library search paths. llvm-svn: 187466
-
Richard Smith authored
change, other than removal of undefined behavior. llvm-svn: 187465
-
Matt Arsenault authored
One form would accept a vector of pointers, and the other did not. Make both accept vectors of pointers, and add an assertion for the number of elements. llvm-svn: 187464
-
Rafael Espindola authored
The unix one was returning no_such_file_or_directory, but the windows one was return success. Update the one one caller that was depending on the old behavior. llvm-svn: 187463
-
Owen Anderson authored
llvm-svn: 187462
-
Rui Ueyama authored
llvm-svn: 187461
-
Rui Ueyama authored
llvm-svn: 187460
-
Eric Christopher authored
llvm-svn: 187459
-
Daniel Jasper authored
Before: template <typename... Types> typename enable_if < 0<sizeof...(Types)>::type Foo() {} After: template <typename... Types> typename enable_if<0 < sizeof...(Types)>::type Foo() {} llvm-svn: 187458
-
Eric Christopher authored
llvm-svn: 187457
-
Eric Christopher authored
llvm-svn: 187456
-
Matt Arsenault authored
This avoids constant folding bitcast/ptrtoint/inttoptr combinations that have illegal bitcasts between differently sized address spaces. llvm-svn: 187455
-
Matt Arsenault authored
Apparently dragonegg uses it. llvm-svn: 187454
-