summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Only generate the popc instruction for SPARC CPUs that implement it.Jakob Stoklund Olesen2014-01-265-12/+19
| | | | | | | The popc instruction is defined in the SPARCv9 instruction set architecture, but it was emulated on CPUs older than Niagara 2. llvm-svn: 200131
* Fix swapped CASA operands.Jakob Stoklund Olesen2014-01-262-4/+4
| | | | | | Found by SingleSource/UnitTests/AtomicOps.c llvm-svn: 200130
* Construct the MCStreamer before constructing the MCTargetStreamer.Rafael Espindola2014-01-2626-119/+138
| | | | | | | | | | This has a few advantages: * Only targets that use a MCTargetStreamer have to worry about it. * There is never a MCTargetStreamer without a MCStreamer, so we can use a reference. * A MCTargetStreamer can talk to the MCStreamer in its constructor. llvm-svn: 200129
* [Sparc] Add support for parsing DW_CFA_GNU_window_save. Venkatraman Govindaraju2014-01-264-0/+112
| | | | llvm-svn: 200127
* Convert some easy uses of EmitRawText to TargetStreamer methods.Rafael Espindola2014-01-263-12/+97
| | | | llvm-svn: 200122
* COFF: Add a missing enum value for high entropy ASLR.Rui Ueyama2014-01-263-0/+5
| | | | | | | | | That bit is not documented in the PE/COFF spec published by Microsoft, so we don't know the official name of it. I named this bit IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VIRTUAL_ADDRESS because the bit is reported as "high entropy virtual address" by dumpbin.exe, llvm-svn: 200121
* Improve some x86 type constraints.Craig Topper2014-01-261-11/+22
| | | | llvm-svn: 200120
* Improve pattern match from v1i8 to v1i32 for AArch64 Neon.Jiangning Liu2014-01-262-14/+23
| | | | llvm-svn: 200119
* Remove unused typedef.Rui Ueyama2014-01-261-2/+0
| | | | llvm-svn: 200118
* llvm-readobj: add support for PE32+ (Windows 64 bit executable).Rui Ueyama2014-01-265-62/+180
| | | | | | | | | | | | PE32+ supports 64 bit address space, but the file format remains 32 bit. So its file format is pretty similar to PE32 (32 bit executable). The differences compared to PE32 are (1) the lack of "BaseOfData" field and (2) some of its data members are 64 bit. In this patch, I added a new member function to get a PE32+ Header object to COFFObjectFile class and made llvm-readobj to use it. llvm-svn: 200117
* Remove -print-hack-directives from a test where we already do the right thing.Rafael Espindola2014-01-261-1/+1
| | | | llvm-svn: 200116
* Move tests that just use llc from test/MC/Mips to test/MC/Codegen.Rafael Espindola2014-01-264-0/+0
| | | | | | This is an expanded version of r200064. llvm-svn: 200115
* Implement pattern match from v1xx to v1xx for AArch64 Neon.Jiangning Liu2014-01-262-0/+199
| | | | llvm-svn: 200113
* [Sparc] Add support for sparc relocation types in ELF object file.Venkatraman Govindaraju2014-01-263-0/+117
| | | | llvm-svn: 200112
* [AArch64 NEON] Add patterns for concat_vector on v2i32.Kevin Qin2014-01-262-21/+56
| | | | llvm-svn: 200111
* [AArch64 NEON] Add test case for vector FP_ROUND.Kevin Qin2014-01-261-0/+18
| | | | llvm-svn: 200110
* [AArch64 NEON] Fix pattern match failed on FP_ROUND from v1f128 to v1f64.Kevin Qin2014-01-262-0/+13
| | | | llvm-svn: 200109
* removing duplicate enum valueVenkatraman Govindaraju2014-01-251-1/+0
| | | | llvm-svn: 200104
* Missing ELF relocations for Sparc.Venkatraman Govindaraju2014-01-251-1/+31
| | | | llvm-svn: 200103
* Re-enabling MCJIT tests on ARMRenato Golin2014-01-251-2/+2
| | | | | | | | | After several refactorings on the MCJIT remote communication, things are finally looking good on Clang-compiled LLVM regarding MCJIT remote tests, so I'm re-enabling them to see how the self-hosting buildbot behaves over a longer period. llvm-svn: 200102
* [Sparc] Add sparc to the list of XFAIL architecture. It seems that the ↵Venkatraman Govindaraju2014-01-251-1/+1
| | | | | | llvm-cov test is not supported in big-endian architectures. llvm-svn: 200101
* Set displacementSize to 1 for instrucitons with mod==0x1. Fixes PR17310. ↵Craig Topper2014-01-251-0/+3
| | | | | | Modified from patch by James Courtier-Dutton. llvm-svn: 200100
* Add a TBAA CodeGen failure test caseHal Finkel2014-01-251-0/+41
| | | | | | | | | I disabled the use of TBAA in CodeGen in r200093. This adds a test case that demonstrates the problems with inttoptr and TBAA in CodeGen (and, specifically, the problem that causes LLVM to miscompile itself in Release mode). This test will currently fail if -use-tbaa-in-sched-mi is enabled. llvm-svn: 200097
* Clean up hack which is no longer needed after r198617. No functionality change.Evan Cheng2014-01-251-3/+2
| | | | llvm-svn: 200095
* XFAIL test/CodeGen/SystemZ/alias-01.ll which requires CodeGen TBAAHal Finkel2014-01-251-0/+3
| | | | llvm-svn: 200094
* Disable the use of TBAA when using AA in CodeGenHal Finkel2014-01-253-4/+32
| | | | | | | | | | | | | | | | | There are currently two issues, of which I currently know, that prevent TBAA from being correctly usable in CodeGen: 1. Stack coloring does not update TBAA when merging allocas. This is easy enough to fix, but is not the largest problem. 2. CGP inserts ptrtoint/inttoptr pairs when sinking address computations. Because BasicAA does not handle inttoptr, we'll often miss basic type punning idioms that we need to catch so we don't miscompile real-world code (like LLVM). I don't yet have a small test case for this, but this fixes self hosting a non-asserts build of LLVM on PPC64 when using -enable-aa-sched-mi and -misched=shuffle. llvm-svn: 200093
* Don't use EnforceSmallerThan for EnforceVectorSubVectorTypeIs. ↵Craig Topper2014-01-251-2/+53
| | | | | | EnforceSmallerThan doesn't handle vectors quite right and should really enforce that vectors have the same number of elements. Add explicit checks for vector element count differing in EnforceVectorSubVectorTypeIs instead. This removes some unnecessary type checks in X86GenDAGISel.inc. llvm-svn: 200091
* Fix "llvm-objdump -d -r" to show relocations inline for ELF filesMark Seaborn2014-01-252-6/+58
| | | | | | | | | | | | | | | | | | | This fixes a regression introduced by r182908, which broke llvm-objdump's ability to display relocations inline in a disassembly dump for ELF object files. That change removed a SectionRelocMap from Object/ELF.h, which we recreate in llvm-objdump.cpp. I discovered this regression via an out-of-tree test (test/NaCl/X86/pnacl-hides-sandbox-x86-64.ll) which used llvm-objdump. Note that the "Unknown" string in the test output on i386 isn't quite right, but this appears to be a pre-existing bug. Differential Revision: http://llvm-reviews.chandlerc.com/D2559 llvm-svn: 200090
* Fix typo in commment tyep->type.Craig Topper2014-01-251-1/+1
| | | | llvm-svn: 200089
* Add combiner-aa-only-func (debug only)Hal Finkel2014-01-251-0/+22
| | | | | | | | | This option (which is !NDEBUG only) allows restricting the use of alias analysis in DAGCombiner to a specific function. This has proved extremely valuable to isolating bugs related to this feature, and mirrors the misched-only-func option provided by the new instruction scheduler. llvm-svn: 200088
* Improve descriptions of combiner-alias-analysis and ↵Hal Finkel2014-01-251-2/+2
| | | | | | combiner-global-alias-analysis llvm-svn: 200087
* Reverting r199886 (Prevent repetitive warnings for unrecognized processors ↵Artyom Skrobov2014-01-254-59/+27
| | | | | | and features) llvm-svn: 200083
* Added .DS_Store entry in .gitignore for ignoring .DS_Store files in the sourceRafael Espindola2014-01-251-0/+2
| | | | | | | | tree generated by OS X. Patch by Abhay Kadam! llvm-svn: 200079
* This reverts commit r200064 and r200051.Rafael Espindola2014-01-259-206/+120
| | | | | | | | | | | | | | | | | | | r200064 depends on r200051. r200051 is broken: I tries to replace .mips_hack_elf_flags, which is a good thing, but what it replaces it with is even worse. The new emitMipsELFFlags it adds corresponds to no assembly directive, is not marked as a hack and is not even printed to the .s file. The patch also introduces more uses of hasRawTextSupport. The correct way to remove .mips_hack_elf_flags is to have the mips target streamer handle the default flags (and command line options). That way the same code path is used for asm and obj. The streamer interface should *really* correspond to what is printed in the .s file. llvm-svn: 200078
* [LPM] Conclude my immediate work by making the LoopVectorizerChandler Carruth2014-01-251-8/+37
| | | | | | | | | | | | a FunctionPass. With this change the loop vectorizer no longer is a loop pass and can readily depend on function analyses. In particular, with this change we no longer have to form a loop pass manager to run the loop vectorizer which simplifies the entire pass management of LLVM. The next step here is to teach the loop vectorizer to leverage profile information through the profile information providing analysis passes. llvm-svn: 200074
* Use isConcrete and getConcrete instead of using TypeVec directly.Craig Topper2014-01-251-3/+3
| | | | llvm-svn: 200071
* Fix EnforceSmallerThan to check !hasVectorTypes on the other type instead of ↵Craig Topper2014-01-251-1/+1
| | | | | | this type to force this type to be scalar. llvm-svn: 200070
* [LPM] Make LCSSA a utility with a FunctionPass that applies it to allChandler Carruth2014-01-256-182/+298
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the loops in a function, and teach LICM to work in the presance of LCSSA. Previously, LCSSA was a loop pass. That made passes requiring it also be loop passes and unable to depend on function analysis passes easily. It also caused outer loops to have a different "canonical" form from inner loops during analysis. Instead, we go into LCSSA form and preserve it through the loop pass manager run. Note that this has the same problem as LoopSimplify that prevents enabling its verification -- loop passes which run at the end of the loop pass manager and don't preserve these are valid, but the subsequent loop pass runs of outer loops that do preserve this pass trigger too much verification and fail because the inner loop no longer verifies. The other problem this exposed is that LICM was completely unable to handle LCSSA form. It didn't preserve it and it actually would give up on moving instructions in many cases when they were used by an LCSSA phi node. I've taught LICM to support detecting LCSSA-form PHI nodes and to hoist and sink around them. This may actually let LICM fire significantly more because we put everything into LCSSA form to rotate the loop before running LICM. =/ Now LICM should handle that fine and preserve it correctly. The down side is that LICM has to require LCSSA in order to preserve it. This is just a fact of life for LCSSA. It's entirely possible we should completely remove LCSSA from the optimizer. The test updates are essentially accomodating LCSSA phi nodes in the output of LICM, and the fact that we now completely sink every instruction in ashr-crash below the loop bodies prior to unrolling. With this change, LCSSA is computed only three times in the pass pipeline. One of them could be removed (and potentially a SCEV run and a separate LoopPassManager entirely!) if we had a LoopPass variant of InstCombine that ran InstCombine on the loop body but refused to combine away LCSSA PHI nodes. Currently, this also prevents loop unrolling from being in the same loop pass manager is rotate, LICM, and unswitch. There is one thing that I *really* don't like -- preserving LCSSA in LICM is quite expensive. We end up having to re-run LCSSA twice for some loops after LICM runs because LICM can undo LCSSA both in the current loop and the parent loop. I don't really see good solutions to this other than to completely move away from LCSSA and using tools like SSAUpdater instead. llvm-svn: 200067
* Remove an easy use of EmitRawText from PPC.Rafael Espindola2014-01-254-7/+19
| | | | | | This makes lib/Target/PowerPC EmitRawText free. llvm-svn: 200065
* [Mips] Move 2 test cases from MC to CodeGen.Jack Carter2014-01-252-0/+0
| | | | | | No code changes. Just reassignment of test case files. llvm-svn: 200064
* Revert "Revert "Add Constant Hoisting Pass" (r200034)"Juergen Ributzka2014-01-2521-41/+723
| | | | | | | This reverts commit r200058 and adds the using directive for ARMTargetTransformInfo to silence two g++ overload warnings. llvm-svn: 200062
* Fix llvm-dis to print the inalloca bit on allocas.Reid Kleckner2014-01-251-0/+2
| | | | llvm-svn: 200059
* Revert "Add Constant Hoisting Pass" (r200034)Hans Wennborg2014-01-2520-722/+40
| | | | | | | | | | | | | | | This commit caused -Woverloaded-virtual warnings. The two new TargetTransformInfo::getIntImmCost functions were only added to the superclass, and to the X86 subclass. The other targets were not updated, and the warning highlighted this by pointing out that e.g. ARMTTI::getIntImmCost was hiding the two new getIntImmCost variants. We could pacify the warning by adding "using TargetTransformInfo::getIntImmCost" to the various subclasses, or turning it off, but I suspect that it's wrong to leave the functions unimplemnted in those targets. The default implementations return TCC_Free, which I don't think is right e.g. for ARM. llvm-svn: 200058
* llvm-objdump: Some style cleanups to follow LLVM coding styleMark Seaborn2014-01-251-56/+69
| | | | | | | | | | | | Rename "ec" to "EC", and rename some iterators. Then fix whitespace using clang-format-diff. (As requested in http://llvm-reviews.chandlerc.com/D2559) Differential Revision: http://llvm-reviews.chandlerc.com/D2594 llvm-svn: 200053
* [Mips] TargetStreamer ELF flag Support for default and commandline options.Jack Carter2014-01-258-76/+162
| | | | | | | | | | | | | | | This patch uses a common MipsTargetSteamer interface for both MipsAsmPrinter and MipsAsmParser for recording default and commandline driven directives that affect ELF header flags. It has been noted that the .ll tests affected by this patch belong in test/Codegen/Mips. I will move them in a separate patch. Also, a number of directives do not get expressed by AsmPrinter in the resultant .s assembly such as setting the correct ASI. I have noted this in the tests and they will be addressed in later patches. llvm-svn: 200051
* Typo fix.Aaron Ballman2014-01-241-1/+1
| | | | llvm-svn: 200050
* [AArch64] Removed unused i8 type from FPR8 register class.Ana Pazos2014-01-242-1/+48
| | | | | | | | | | | | | | | The i8 type is not registered with any register class. This causes a segmentation fault in MachineLICM::getRegisterClassIDAndCost. The code selects the first type associated with register class FPR8, which happens to be i8. It uses this type (i8) to get the representative class pointer, which is 0. It then uses this pointer to access a field, resulting in segmentation fault. Since i8 type is not being used for printing any neon instruction we can safely remove it. llvm-svn: 200046
* Fix c++03 build.Rafael Espindola2014-01-241-6/+12
| | | | llvm-svn: 200042
* Make ObjectFile ownership of the MemoryBuffer optional.Rafael Espindola2014-01-2411-85/+98
| | | | | | This allows llvm-ar to mmap the input files only once. llvm-svn: 200040
* Support/COFF: Fix PEHeader struct, and define PE32Header as its alias.Rui Ueyama2014-01-241-6/+8
| | | | | | | | This change does not affect anything because everybody seems to be using Object/COFF.h instead. But the definition is not for PE32 but for PE32+, so fix it anyway. llvm-svn: 200038
OpenPOWER on IntegriCloud