summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Fix indentation. No functional change.Craig Topper2013-07-111-8/+8
| | | | llvm-svn: 186065
* Fix a warning.Nadav Rotem2013-07-111-2/+1
| | | | llvm-svn: 186064
* Consolidate more lit tests.Nadav Rotem2013-07-113-62/+54
| | | | llvm-svn: 186063
* Consolidate some of the lit tests.Nadav Rotem2013-07-114-75/+57
| | | | llvm-svn: 186062
* Consolidate some of the lit tests.Nadav Rotem2013-07-115-61/+191
| | | | llvm-svn: 186060
* SLPVectorizer: refactor the code that places extracts. Place the code that ↵Nadav Rotem2013-07-111-41/+131
| | | | | | decides where to put extracts in the build-tree phase. This allows us to take the cost of the extracts into account. llvm-svn: 186058
* Teach TailRecursionElimination to handle certain cases of nocapture escaping ↵Michael Gottesman2013-07-113-89/+171
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | allocas. Without the changes introduced into this patch, if TRE saw any allocas at all, TRE would not perform TRE *or* mark callsites with the tail marker. Because TRE runs after mem2reg, this inadequacy is not a death sentence. But given a callsite A without escaping alloca argument, A may not be able to have the tail marker placed on it due to a separate callsite B having a write-back parameter passed in via an argument with the nocapture attribute. Assume that B is the only other callsite besides A and B only has nocapture escaping alloca arguments (*NOTE* B may have other arguments that are not passed allocas). In this case not marking A with the tail marker is unnecessarily conservative since: 1. By assumption A has no escaping alloca arguments itself so it can not access the caller's stack via its arguments. 2. Since all of B's escaping alloca arguments are passed as parameters with the nocapture attribute, we know that B does not stash said escaping allocas in a manner that outlives B itself and thus could be accessed indirectly by A. With the changes introduced by this patch: 1. If we see any escaping allocas passed as a capturing argument, we do nothing and bail early. 2. If we do not see any escaping allocas passed as captured arguments but we do see escaping allocas passed as nocapture arguments: i. We do not perform TRE to avoid PR962 since the code generator produces significantly worse code for the dynamic allocas that would be created by the TRE algorithm. ii. If we do not return twice, mark call sites without escaping allocas with the tail marker. *NOTE* This excludes functions with escaping nocapture allocas. 3. If we do not see any escaping allocas at all (whether captured or not): i. If we do not have usage of setjmp, mark all callsites with the tail marker. ii. If there are no dynamic/variable sized allocas in the function, attempt to perform TRE on all callsites in the function. Based off of a patch by Nick Lewycky. rdar://14324281. llvm-svn: 186057
* Move r186044 tests into CodeGen/X86Hal Finkel2013-07-112-4/+2
| | | | | | | | I had thought that these tests could be target-neutral, but in practice this is not the case (on some targets, like Hexagon and Darwin), they trigger an assert (a different assert than the one that r186044 fixes). llvm-svn: 186051
* Set REQUIRES shell on the test cases for r186044Hal Finkel2013-07-102-0/+2
| | | | | | Trying to fix the i686-mingw32 build. llvm-svn: 186046
* XFAIL the test cases for r186044 on HexagonHal Finkel2013-07-102-0/+2
| | | | | | | For some reason, the Hexagon backend does not reject these invalid static initializer expressions, but instead crashes in AsmPrinter::EmitGlobalConstant. llvm-svn: 186045
* Don't assert if we can't constant fold extract/insertvalueHal Finkel2013-07-103-8/+37
| | | | | | | | | | | | | | | A non-constant-foldable static initializer expression containing insertvalue or extractvalue had been causing an assert: Constants.cpp:1971: Assertion `FC && "ExtractValue constant expr couldn't be folded!"' failed. Now we report a more-sensible "Unsupported expression in static initializer" error instead. Fixes PR15417. llvm-svn: 186044
* Remove this test for now.Rafael Espindola2013-07-101-7/+0
| | | | | | | It is not reliable to depend on the output of llvm_unreachable. The original change will have proper tests when llvm-ar moves to lib/Object (soon). llvm-svn: 186043
* CommandLine.rst: remove tiny bit of bad mark-upHans Wennborg2013-07-101-1/+1
| | | | llvm-svn: 186042
* Find the symbol table on archives created on OS X.Rafael Espindola2013-07-102-3/+21
| | | | llvm-svn: 186041
* Move tests from test/Archive to test/Object.Rafael Espindola2013-07-1018-46/+23
| | | | | | | | There is no lib/Archive anymore and some archive tests were in test/Archive and others in test/Object. Since archive is just one of the formats supported by lib/Object, test/Object is probably the best location. llvm-svn: 186038
* Add a comment.Adrian Prantl2013-07-101-0/+39
| | | | llvm-svn: 186035
* Put ELF COMDAT relocations into the relevant COMDAT group.Tim Northover2013-07-103-3/+39
| | | | | | | | Patch from Игорь Пашев (I do hope we support utf-8 commit messages; I also hope he'll forgive me for transliterating it as Igor Pashev in case things go horribly wrong). llvm-svn: 186034
* Remove trailing whitespacStephen Lin2013-07-101-2/+2
| | | | llvm-svn: 186032
* Add a testcase for r186014.Adrian Prantl2013-07-101-0/+139
| | | | llvm-svn: 186031
* Don't crash in 'llvm -s' when an archive has no symtab.Rafael Espindola2013-07-103-22/+38
| | | | llvm-svn: 186029
* Fix %t typo in Ocaml bindings test.Reid Kleckner2013-07-101-3/+3
| | | | llvm-svn: 186027
* [objc-arc] Changed 'mode: c++' => 'C++' at Nick Lewycky's suggestion. Also ↵Michael Gottesman2013-07-107-7/+7
| | | | | | removed unnecessary mode: c++ lines from .cpp files. llvm-svn: 186026
* Changed "mode: c++" => "C++" at the suggestion of Nick Lewycky.Michael Gottesman2013-07-101-1/+1
| | | | llvm-svn: 186025
* Update doxygen comment to match renamed parameters.Benjamin Kramer2013-07-101-2/+2
| | | | | | Found by -Wdocumentation. llvm-svn: 186021
* MemoryBuffer::getFile handles zero sized files, no need to duplicate the test.Rafael Espindola2013-07-101-21/+2
| | | | llvm-svn: 186018
* Replacing an empty switch with its moral equivalent. No functional changes ↵Aaron Ballman2013-07-102-8/+2
| | | | | | intended. llvm-svn: 186017
* Use status to implement file_size.Rafael Espindola2013-07-103-36/+14
| | | | | | | | | | The status function is already using a syscall that returns the file size. Remember it and implement file_size as a simple wrapper. No functionally change, but clients that already use status now can avoid calling file_size. llvm-svn: 186016
* Use the appropriate unsigned int type for the offset.Adrian Prantl2013-07-101-2/+3
| | | | llvm-svn: 186015
* Safeguard DBG_VALUE handling. Unbreaks the ASAN buildbot.Adrian Prantl2013-07-101-1/+2
| | | | llvm-svn: 186014
* Simplify code.Craig Topper2013-07-101-6/+2
| | | | llvm-svn: 186013
* R600/SI: Initial local memory supportMichel Danzer2013-07-108-55/+100
| | | | | | | Enough for the radeonsi driver to use it for calculating derivatives. Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 186012
* R600/SI: Add pattern for the AMDGPU.barrier.local intrinsicMichel Danzer2013-07-101-1/+10
| | | | | | | lit test coverage to follow in the next commit. Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 186011
* R600/SI: Add intrinsic for retrieving the current thread IDMichel Danzer2013-07-103-2/+25
| | | | | Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 186010
* R600/SI: Initial support for LDS/GDS instructionsMichel Danzer2013-07-105-0/+68
| | | | | Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 186009
* R600/SI: Add intrinsics for texture sampling with user derivativesMichel Danzer2013-07-103-1/+147
| | | | | Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 186008
* Remove llvm/ADT/NullablePtr.h, there are no uses of it in-tree.Argyrios Kyrtzidis2013-07-101-62/+0
| | | | llvm-svn: 186006
* PPC: Add a better comment about the i64 FI fixupHal Finkel2013-07-101-2/+13
| | | | | | | | In discussing this change with Bill Schmidt, it was decided that the original comment about negative FIs was incorrect. We'll still exclude them for now, but now with a more-accurate explanation. llvm-svn: 186005
* Reverting commit r185999 due to buildboot failure.Vladimir Medic2013-07-101-10/+0
| | | | llvm-svn: 186001
* Reverting commit r185999 due to buildboot failure.Vladimir Medic2013-07-102-49/+0
| | | | llvm-svn: 186000
* Add support for Mips break and syscall insructions. The corresponding test ↵Vladimir Medic2013-07-103-2/+61
| | | | | | cases are added. llvm-svn: 185999
* Fix typoStephen Lin2013-07-101-1/+1
| | | | llvm-svn: 185995
* Explicitly define ARMISelLowering::isFMAFasterThanFMulAndFAdd. No ↵Stephen Lin2013-07-101-0/+11
| | | | | | | | | | functionality change. Currently ARM is the only backend that supports FMA instructions (for at least some subtargets) but does not implement this virtual, so FMAs are never generated except from explicit fma intrinsic calls. Apparently this is due to the fact that it supports both fused (one rounding step) and unfused (two rounding step) multiply + add instructions. This patch clarifies that this the case without changing behavior by implementing the virtual function to simply return false, as the default TargetLoweringBase version does. It is possible that some cpus perform the fused version faster than the unfused version and vice-versa, so the function implementation should be revisited if hard data is found. llvm-svn: 185994
* Un-break the buildbot by tweaking the indirection flag.Adrian Prantl2013-07-102-2/+110
| | | | | | Pulled in a testcase from the debuginfo-test suite. llvm-svn: 185993
* Document a known limitation of the status quo.Adrian Prantl2013-07-101-1/+3
| | | | llvm-svn: 185992
* Correct comment.Duncan Sands2013-07-101-1/+1
| | | | llvm-svn: 185987
* Fix comment.Eric Christopher2013-07-091-1/+1
| | | | llvm-svn: 185984
* ARM: Fix incorrect pack pattern for thumb2Jim Grosbach2013-07-092-2/+30
| | | | | | | | | | | | | | | Propagate the fix from r185712 to Thumb2 codegen as well. Original commit message applies here as well: A "pkhtb x, x, y asr #num" uses the lower 16 bits of "y asr #num" and packs them in the bottom half of "x". An arithmetic and logic shift are only equivalent in this context if the shift amount is 16. We would be shifting in ones into the bottom 16bits instead of zeros if "y" is negative. rdar://14338767 llvm-svn: 185982
* Implement categories for special case lists.Peter Collingbourne2013-07-094-53/+182
| | | | | | | | | | | | | | | | | | | | | | | | A special case list can now specify categories for specific globals, which can be used to instruct an instrumentation pass to treat certain functions or global variables in a specific way, such as by omitting certain aspects of instrumentation while keeping others, or informing the instrumentation pass that a specific uninstrumentable function has certain semantics, thus allowing the pass to instrument callers according to those semantics. For example, AddressSanitizer now uses the "init" category instead of global-init prefixes for globals whose initializers should not be instrumented, but which in all other respects should be instrumented. The motivating use case is DataFlowSanitizer, which will have a number of different categories for uninstrumentable functions, such as "functional" which specifies that a function has pure functional semantics, or "discard" which indicates that a function's return value should not be labelled. Differential Revision: http://llvm-reviews.chandlerc.com/D1092 llvm-svn: 185978
* Add some SpecialCaseList unit tests.Peter Collingbourne2013-07-092-0/+118
| | | | | | Differential Revision: http://llvm-reviews.chandlerc.com/D1091 llvm-svn: 185977
* Introduce a SpecialCaseList ctor which takes a MemoryBuffer to makePeter Collingbourne2013-07-092-1/+13
| | | | | | | | it more unit testable, and fix memory leak in the other ctor. Differential Revision: http://llvm-reviews.chandlerc.com/D1090 llvm-svn: 185976
OpenPOWER on IntegriCloud