summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Refactor operation equivalence checking in BBVectorize by extending ↵Hal Finkel2012-06-283-29/+29
| | | | | | | | | | | Instruction::isSameOperationAs. Maintaining this kind of checking in different places is dangerous, extending Instruction::isSameOperationAs consolidates this logic into one place. Here I've added an optional flags parameter and two flags that are important for vectorization: CompareIgnoringAlignment and CompareUsingScalarTypes. llvm-svn: 159329
* Only print out the tag if it's there.Bill Wendling2012-06-281-1/+2
| | | | llvm-svn: 159328
* Don't output an empty string.Bill Wendling2012-06-281-2/+3
| | | | llvm-svn: 159327
* The Mips specific inline asm operand modifier 'z' has theJack Carter2012-06-282-1/+25
| | | | | | | | following description in the gnu sources: Print $0 if operand is zero otherwise print the op normally. llvm-svn: 159324
* make LVI::getEdgeValue() always intersect the constraints of the edge with ↵Nuno Lopes2012-06-282-36/+97
| | | | | | the range of the block. Previously it was only performing the intersection for a few cases, thus losing precision llvm-svn: 159320
* fix a off-by-one bug in intersectWith(), and add a bunch of testsNuno Lopes2012-06-282-3/+33
| | | | llvm-svn: 159319
* Use the interface through DIDescriptor to get the tag/version for a debug infoBill Wendling2012-06-281-9/+11
| | | | | | MDNode. llvm-svn: 159317
* Silence unused variable warning.Richard Trieu2012-06-281-0/+1
| | | | llvm-svn: 159316
* Fix cmake failure from moving files around.Bill Wendling2012-06-282-1/+1
| | | | llvm-svn: 159314
* Remove 'site.exp' building from both CMake and configure+make.Chandler Carruth2012-06-285-62/+14
| | | | | | | | | | | This is another vestige of the DejaGNU roots. There were FIXMEs in the lit setup to add a 'lit.site.cfg', which has been around for quite some time now, so I've properly switched the handling of the 4 things actually used in site.exp to go through lit.site.cfg now. No more parsing of the .exp file, one fewer configure-style generated file, etc., etc. llvm-svn: 159313
* Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp andBill Wendling2012-06-2842-108/+106
| | | | | | | | | include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h. The reasoning is because the DebugInfo module is simply an interface to the debug info MDNodes and has nothing to do with analysis. llvm-svn: 159312
* Remove the last vestiges of the '-lit' and '-dg' test runner split byChandler Carruth2012-06-281-9/+9
| | | | | | | | removing '-lit' qualifiers from make rules. I've left a legacy 'check-local-lit' rule in case build scripts have this encoded somewhere. llvm-svn: 159311
* Remove 'check-dg', a wrapper around 'check-local-dg' which was justChandler Carruth2012-06-282-24/+2
| | | | | | | | | nuked. Add a comment that the 'check-lit' rule is really just a legacy of having two test runners. llvm-svn: 159310
* Remove autoconf support for runtest and tclsh, some of the last vestigalChandler Carruth2012-06-273-6/+0
| | | | | | | | | | bits of DejaGNU. Eric, you may want to remove the TCLSH bits from aclocal.m4 and regenerate... I didn't want to touch the m4 file lest something exploded. llvm-svn: 159308
* Rip out legacy DejaGNU support from our Makefiles. This hasn't been theChandler Carruth2012-06-271-22/+0
| | | | | | | default in forever, and hasn't even worked since most of the .exp files were removed. llvm-svn: 159307
* LLVM-GCC is dead. Really. I promise. ;]Chandler Carruth2012-06-271-2/+0
| | | | | | | More importantly, these files don't even have the variable that these lines purport to substite. llvm-svn: 159304
* This allows hello world to be compiled for Mips 64 direct object.Jack Carter2012-06-272-0/+40
| | | | | | | | | | | It takes advantage of r159299 which introduces relocation support for N64. elf-dump needed to be upgraded to support N64 relocations as well. This passes make check. Jack llvm-svn: 159302
* This allows hello world to be compiled for Mips 64 direct object.Jack Carter2012-06-275-12/+83
| | | | | | | | | | | It takes advantage of r159299 which introduces relocation support for N64. elf-dump needed to be upgraded to support N64 relocations as well. This passes make check. Jack llvm-svn: 159301
* Whitespace.Chad Rosier2012-06-271-34/+34
| | | | llvm-svn: 159300
* The ELF relocation record format is different for N64 Jack Carter2012-06-274-13/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | which many Mips 64 ABIs use than for O64 which many if not all other target ABIs use. Most architectures have the following 64 bit relocation record format: typedef struct { Elf64_Addr r_offset; /* Address of reference */ Elf64_Xword r_info; /* Symbol index and type of relocation */ } Elf64_Rel; typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela; Whereas N64 has the following format: typedef struct { Elf64_Addr r_offset;/* Address of reference */ Elf64_Word r_sym; /* Symbol index */ Elf64_Byte r_ssym; /* Special symbol */ Elf64_Byte r_type3; /* Relocation type */ Elf64_Byte r_type2; /* Relocation type */ Elf64_Byte r_type; /* Relocation type */ } Elf64_Rel; typedef struct { Elf64_Addr r_offset;/* Address of reference */ Elf64_Word r_sym; /* Symbol index */ Elf64_Byte r_ssym; /* Special symbol */ Elf64_Byte r_type3; /* Relocation type */ Elf64_Byte r_type2; /* Relocation type */ Elf64_Byte r_type; /* Relocation type */ Elf64_Sxword r_addend; } Elf64_Rela; The structure is the same size, but the r_info data element is now 5 separate elements. Besides the content aspects, endian byte reordering will be different for the area with each element being endianized separately. I treat this as generic and continue to pass r_type as an integer masking and unmasking the byte sized N64 values for N64 mode. I've implemented this and it causes no affect on other current targets. This passes make check. Jack llvm-svn: 159299
* Refactor and speed up DFA generator.Anshuman Dasgupta2012-06-271-21/+48
| | | | | | Patch by Ivan Llopard! llvm-svn: 159281
* Revert r159136 due to PR13124.Matt Beaumont-Gay2012-06-273-31/+0
| | | | | | | | | | | Original commit message: If a constant or a function has linkonce_odr linkage and unnamed_addr, mark it hidden. Being linkonce_odr guarantees that it is available in every dso that needs it. Being a constant/function with unnamed_addr guarantees that the copies don't have to be merged. llvm-svn: 159272
* When users ask for -mcpu=help or -mattr=help, just output the help withoutDuncan Sands2012-06-271-13/+23
| | | | | | | | requiring a module. Original patch by Sunay Ismail, simplified by Arnaud de Grandmaison, then complicated by me (if a triple was specified on the command line, output help for that triple, not for the default). llvm-svn: 159268
* Some reassociate optimizations create new instructions, which they insert justDuncan Sands2012-06-272-11/+21
| | | | | | | | | | | before the expression root. Any existing operators that are changed to use one of them needs to be moved between it and the expression root, and recursively for the operators using that one. When I rewrote RewriteExprTree I accidentally inverted the logic, resulting in the compacting going down from operators to operands rather than up from operands to the operators using them, oops. Fix this, resolving PR12963. llvm-svn: 159265
* Teach assembler to handle capitalised operation values for DSB instructionsRichard Barton2012-06-272-1/+7
| | | | llvm-svn: 159259
* Clean up the 'check' CMake build rule a bit, notable renaming it toChandler Carruth2012-06-271-19/+28
| | | | | | | | | | | | | | | | | | | | | | | | | 'check-llvm'. Don't worry! 'check' still works! =] To rationalize the names of targets used to run tests, the vague plan is the following: make check-llvm # run LLVM reg/unit tests (currently 'check') make check-clang # run Clang reg/unit tests (currently 'clang-test') make check-rt # run CompilerRT reg/unit tests make check-asan # run ASan reg/unit tests (subset of -rt) make check-tsan # run TSan reg/unit tests (subset of -rt) make check-all # run as much of the above as is available The last one respects what projects are checked out and built for a given tree. Personally, I would like to eventually make 'check' be an alias for 'check-all'. For now however, it is an alias for 'check-llvm', and thus no behavior has changed. While this patch and my plan only really apply to CMake, I think it might be good to similarly rationalize the naming scheme for the Make builds. llvm-svn: 159258
* Prevent ARM Assembler crashing on unrecognised assembly format for DSB ↵Richard Barton2012-06-271-1/+2
| | | | | | instruction llvm-svn: 159257
* Sphinxify the exception handling doc.Bill Wendling2012-06-273-564/+369
| | | | llvm-svn: 159254
* Silence uninitialized variable warning in MipsISelDAGToDAG.cpp.Akira Hatanaka2012-06-271-1/+1
| | | | llvm-svn: 159243
* Test case for r159240.Akira Hatanaka2012-06-271-0/+9
| | | | llvm-svn: 159242
* Exclude both libcxx and compiler-rt until we get their CMake buildsChandler Carruth2012-06-271-1/+2
| | | | | | suitable for building as a whole-project. llvm-svn: 159241
* Fix bug in computation of stack size in MipsFrameLowering.cpp.Akira Hatanaka2012-06-272-3/+10
| | | | llvm-svn: 159240
* Reduce indentation in function. Rearrange some methods. No functionality change.Bill Wendling2012-06-261-223/+222
| | | | llvm-svn: 159239
* TableGen: AsmMatcher diagnostics preference detail.Jim Grosbach2012-06-261-1/+3
| | | | | | | Don't override a custom diagnostic w/ a generic InvalidOperand, all else being equal. llvm-svn: 159238
* Revamp how debugging information is emitted for debug info objects.Bill Wendling2012-06-262-196/+113
| | | | | | | | | It's not necessary for each DI class to have its own copy of `print' and `dump'. Instead, just give DIDescriptor those methods and have it call the appropriate debugging printing routine based on the type of the debug information. llvm-svn: 159237
* Add a missing check to avoid dereference null. No sensible test case ↵Evan Cheng2012-06-261-0/+2
| | | | | | possible. Sorry. rdar://11745134 llvm-svn: 159236
* Remove a instcombine transform that (no longer?) makes sense:Evan Cheng2012-06-263-33/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | // C - zext(bool) -> bool ? C - 1 : C if (ZExtInst *ZI = dyn_cast<ZExtInst>(Op1)) if (ZI->getSrcTy()->isIntegerTy(1)) return SelectInst::Create(ZI->getOperand(0), SubOne(C), C); This ends up forming sext i1 instructions that codegen to terrible code. e.g. int blah(_Bool x, _Bool y) { return (x - y) + 1; } => movzbl %dil, %eax movzbl %sil, %ecx shll $31, %ecx sarl $31, %ecx leal 1(%rax,%rcx), %eax ret Without the rule, llvm now generates: movzbl %sil, %ecx movzbl %dil, %eax incl %eax subl %ecx, %eax ret It also helps with ARM (and pretty much any target that doesn't have a sext i1 :-). The transformation was done as part of Eli's r75531. He has given the ok to remove it. rdar://11748024 llvm-svn: 159230
* Implement getHostCPUName for ARM/linux. This will be used to implement ↵Benjamin Kramer2012-06-261-0/+55
| | | | | | | | | | -march=native in clang. The cpuid registers are only available in privileged mode so we don't have an OS-independent way of implementing this. ARM doesn't provide a list of processor IDs so the list is somewhat incomplete. llvm-svn: 159228
* Fix llc's -print-before=pass and -print-after=pass.Rafael Espindola2012-06-262-0/+10
| | | | llvm-svn: 159227
* X86: add GATHER intrinsics (AVX2) in LLVMManman Ren2012-06-2613-4/+268
| | | | | | | | | | | | Support the following intrinsics: llvm.x86.avx2.gather.d.pd, llvm.x86.avx2.gather.q.pd llvm.x86.avx2.gather.d.pd.256, llvm.x86.avx2.gather.q.pd.256 llvm.x86.avx2.gather.d.ps, llvm.x86.avx2.gather.q.ps llvm.x86.avx2.gather.d.ps.256, llvm.x86.avx2.gather.q.ps.256 Modified Disassembler to handle VSIB addressing mode. llvm-svn: 159221
* Teach TableGen to put chains on more instructionsTim Northover2012-06-261-0/+7
| | | | | | | | | | | When generating selection tables for Pat instances, TableGen relied on an output Instruction's Pattern field being set to infer whether a chain should be added. This patch adds additional logic to check various flag fields so that correct code can be generated even if Pattern is unset. llvm-svn: 159217
* Fix ThreadLocalImpl::getInstance for --disable-threads.Argyrios Kyrtzidis2012-06-261-3/+5
| | | | | | PR13114. llvm-svn: 159210
* Allow targets to inject passes before the virtual register rewriter.Jakob Stoklund Olesen2012-06-262-1/+17
| | | | | | | | Such passes can be used to tweak the register assignments in a target-dependent way, for example to avoid write-after-write dependencies. llvm-svn: 159209
* IntegersSubsetTest: Due to compilation failure with -std=c11, replaced -1UL ↵Stepan Dyatkovskiy2012-06-261-4/+8
| | | | | | with NOT_A_NUMBER constant (0xffff). llvm-svn: 159207
* There are a number of generic inline asm operand modifiers thatJack Carter2012-06-2610-12/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | up to r158925 were handled as processor specific. Making them generic and putting tests for these modifiers in the CodeGen/Generic directory caused a number of targets to fail. This commit addresses that problem by having the targets call the generic routine for generic modifiers that they don't currently have explicit code for. For now only generic print operands 'c' and 'n' are supported.vi Affected files: test/CodeGen/Generic/asm-large-immediate.ll lib/Target/PowerPC/PPCAsmPrinter.cpp lib/Target/NVPTX/NVPTXAsmPrinter.cpp lib/Target/ARM/ARMAsmPrinter.cpp lib/Target/XCore/XCoreAsmPrinter.cpp lib/Target/X86/X86AsmPrinter.cpp lib/Target/Hexagon/HexagonAsmPrinter.cpp lib/Target/CellSPU/SPUAsmPrinter.cpp lib/Target/Sparc/SparcAsmPrinter.cpp lib/Target/MBlaze/MBlazeAsmPrinter.cpp lib/Target/Mips/MipsAsmPrinter.cpp MSP430 isn't represented because it did not even run with the long existing 'c' modifier and it was not apparent what needs to be done to get it inline asm ready. Contributer: Jack Carter llvm-svn: 159203
* Replacing zero-sized alloca's with a null pointer is too aggressive, insteadDuncan Sands2012-06-262-9/+47
| | | | | | | | | | | | | | | | merge all zero-sized alloca's into one, fixing c43204g from the Ada ACATS conformance testsuite. What happened there was that a variable sized object was being allocated on the stack, "alloca i8, i32 %size". It was then being passed to another function, which tested that the address was not null (raising an exception if it was) then manipulated %size bytes in it (load and/or store). The optimizers cleverly managed to deduce that %size was zero (congratulations to them, as it isn't at all obvious), which made the alloca zero size, causing the optimizers to replace it with null, which then caused the check mentioned above to fail, and the exception to be raised, wrongly. Note that no loads and stores were actually being done to the alloca (the loop that does them is executed %size times, i.e. is not executed), only the not-null address check. llvm-svn: 159202
* IntegersSubsetMapping: implemented "diff" operation. Operation allows at the ↵Stepan Dyatkovskiy2012-06-262-3/+401
| | | | | | | | | | | | | same time perform up to three operations: - LHS exclude RHS - LHS intersect RHS (LHS successors will keeped) - RHS exclude LHS The complexity is N+M, where N is size of LHS M is size of RHS. llvm-svn: 159201
* IntegersSubsetMapping: removed exclude operation, it will replaced with more ↵Stepan Dyatkovskiy2012-06-262-226/+0
| | | | | | | | universal "diff" operation in next commit. Changes was separated onto two commits for better readability. llvm-svn: 159200
* Sphyinxify the Bugpoint document.Bill Wendling2012-06-263-317/+220
| | | | llvm-svn: 159199
* Removed unused variableElena Demikhovsky2012-06-261-1/+0
| | | | llvm-svn: 159197
OpenPOWER on IntegriCloud