summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Move GenericScheduler and PostGenericScheduler into a header.Andrew Trick2014-06-042-229/+226
| | | | | | | | | | | | | | | | | | | | | | These were not exposed previously because I didn't want out-of-tree targets to be too dependent on their internals. They can be reused for a very wide variety of processors with casual scheduling needs without exposing the classes by instead using hooks defined in MachineSchedPolicy (we can add more if needed). When targets are more aggressively tuned or want to provide custom heuristics, they can define their own MachineSchedStrategy. I tend to think this is better once you start customizing heuristics because you can copy over only what you need. I don't think that layering heuristics generally works well. However, Arch64 targets now want to reuse the Generic scheduling logic but also provide extensions. I don't see much harm in exposing the Generic scheduling classes with a major caveat: these scheduling strategies may change in the future without validating performance on less mainstream processors. If you want to be immune from changes, just define your own MachineSchedStrategy. llvm-svn: 210166
* docs: Remove documentation for legacy PGO optionsJustin Bogner2014-06-044-50/+0
| | | | | | | | Late last year r191835 removed a largely unmaintained legacy PGO infrastructure, but some of the docs were missed. Since these docs are for things that don't actually exist anymore, they should be removed. llvm-svn: 210165
* [Object][ELF] Range-based loop simplification.Simon Atanasyan2014-06-042-23/+20
| | | | | | No functional changes. llvm-svn: 210164
* GraphWriter: try gv before xdg-openAlp Toker2014-06-041-2/+2
| | | | | | | | | Avoid changing behaviour for everyone who's used to the traditional ghostview UI, especially since it knows how to stay in the foreground unlike xdg-open. Amendment to r210147. llvm-svn: 210148
* GraphWriter: support the XDG open utilityAlp Toker2014-06-041-2/+8
| | | | | | | This runs a suitable viewer on Unix desktop environments specified by Freedesktop.org (GNOME, KDE, Linux distributions etc.) llvm-svn: 210147
* config.h: fix layering and don't duplicate definitionsAlp Toker2014-06-044-176/+25
| | | | | | | | | | | Also correct the llvm-config.h header guard so it doesn't depend on 'CONFIG_H' which is commonly defined in external projects and caused trouble for embedders. In future llvm/Config/llvm-config.h will be installed, but not the private llvm/Config/config.h header. llvm-svn: 210144
* DebugInfo: Partial revert r209984 due to more cases where abstract ↵David Blaikie2014-06-042-1/+186
| | | | | | | | | | | | | | | DbgVariables do not have associated DIEs. Along with a test case to demonstrate that due to inlining order there are cases where abstract variable DIEs are not constructed since the abstract subprogram was built due to a previous inlining that optimized away those variables. This produces incorrect debug info (the 'missing' abstract variable causes the inlined instance of that variable to be emitted with a full description (name, line, file) rather than referencing the abstract origin), but this commit at least ensures that it doesn't crash... llvm-svn: 210143
* Fix typosMatt Arsenault2014-06-032-8/+8
| | | | llvm-svn: 210135
* Calculate dead instructions when a live interval is created.Pete Cooper2014-06-032-9/+29
| | | | | | | | This gets us closer to being able to remove LiveVariables entirely which is where dead instructions are currently tagged as such. Reviewed by Jakob Olesen llvm-svn: 210132
* Revert r209381 as it isn't a local variable. Add a testcase so thatEric Christopher2014-06-032-0/+24
| | | | | | we know next time this happens. llvm-svn: 210127
* Fixup formatting in the pass.Eric Christopher2014-06-031-86/+86
| | | | llvm-svn: 210126
* Update comments to match reality.Rafael Espindola2014-06-031-4/+4
| | | | llvm-svn: 210125
* Fix a small bug in the parsing of anonymous globals.Rafael Espindola2014-06-032-0/+4
| | | | | | | | | | | | It was able to parse hidden dllexport global i32 42 but not dllexport global i32 42 llvm-svn: 210121
* Simplify the parsing of unnamed globals. No functionality changed.Rafael Espindola2014-06-031-31/+12
| | | | llvm-svn: 210120
* Update comment. This should have been part of r210062.Rafael Espindola2014-06-031-2/+0
| | | | llvm-svn: 210119
* Remove some redundant doc commentsAlp Toker2014-06-031-8/+0
| | | | llvm-svn: 210118
* [AArch64] Fix typo in load/store optimizer.Tilmann Scheller2014-06-031-1/+1
| | | | llvm-svn: 210114
* [AArch64] Add regression tests for the load/store optimizer which cover ↵Tilmann Scheller2014-06-031-0/+130
| | | | | | | | | | | | | | | | post-index update folding with sub rather than add. The tests check that the following transform happens: (ldr|str) X, [x20] ... sub x20, x20, #16 -> (ldr|str) X, [x20], #-16 with X being either w0, x0, s0, d0 or q0. llvm-svn: 210113
* Implement one operator== with another.Rafael Espindola2014-06-031-1/+1
| | | | | | Thanks for David Blaikie for the suggestion. llvm-svn: 210107
* [asan] Fix coverage instrumentation with -asan-globals=0.Evgeniy Stepanov2014-06-032-25/+44
| | | | llvm-svn: 210103
* AArch64: mark small types (i1, i8, i16) as promotedTim Northover2014-06-034-34/+27
| | | | | | | | | This means the output of LowerFormalArguments returns a lowered SDValue with the correct type (expected in SelectionDAGBuilder). Without this, an assertion under a DEBUG macro triggers when those types are passed on the stack. llvm-svn: 210102
* Add operator== and operator!= to compare with nullptr.Rafael Espindola2014-06-031-0/+20
| | | | llvm-svn: 210100
* Use an enum class.Rafael Espindola2014-06-032-19/+10
| | | | llvm-svn: 210078
* Use an enum class.Rafael Espindola2014-06-032-11/+3
| | | | | | Might also fix the windows build. llvm-svn: 210077
* Remove the last unspecified_bool_type from llvm.Rafael Espindola2014-06-031-4/+1
| | | | llvm-svn: 210076
* Make this operator bool() explicit to match the standard library.Rafael Espindola2014-06-031-6/+1
| | | | llvm-svn: 210073
* Make this operator bool() explicit to match the standard library.Rafael Espindola2014-06-032-29/+26
| | | | llvm-svn: 210072
* Ignore line numbers on debug intrinsics. Add an assert to ensure that we ↵Nick Lewycky2014-06-032-2/+147
| | | | | | aren't emitting line number zero, the .gcno format uses this to indicate that the next field is a filename. llvm-svn: 210068
* [AArch64] Correctly deal with VPR stack parameter passing.Jiangning Liu2014-06-032-3/+18
| | | | llvm-svn: 210067
* Process::GetRandomNumber(): fix insecure RNGAlp Toker2014-06-031-2/+3
| | | | | | | This could have generated non-random output under error conditions in release builds. llvm-svn: 210065
* Allow alias to point to an arbitrary ConstantExpr.Rafael Espindola2014-06-0342-316/+267
| | | | | | | | | | | | | | | | | | | | | This patch changes GlobalAlias to point to an arbitrary ConstantExpr and it is up to MC (or the system assembler) to decide if that expression is valid or not. This reduces our ability to diagnose invalid uses and how early we can spot them, but it also lets us do things like @test5 = alias inttoptr(i32 sub (i32 ptrtoint (i32* @test2 to i32), i32 ptrtoint (i32* @bar to i32)) to i32*) An important implication of this patch is that the notion of aliased global doesn't exist any more. The alias has to encode the information needed to access it in its metadata (linkage, visibility, type, etc). Another consequence to notice is that getSection has to return a "const char *". It could return a NullTerminatedStringRef if there was such a thing, but when that was proposed the decision was to just uses "const char*" for that. llvm-svn: 210062
* Add back commit r210029.Rafael Espindola2014-06-027-16/+31
| | | | | | | | The code was actually correct. Sorry for the confusion. I have expanded the comment saying why the analysis is valid to avoid me misunderstaning it again in the future. llvm-svn: 210052
* Convert test to FileCheck.Rafael Espindola2014-06-021-4/+6
| | | | llvm-svn: 210049
* Revert "Add the nsw flag when we detect that an add will not signed overflow."Rafael Espindola2014-06-027-17/+12
| | | | | | | | | This reverts commit r210029. It was not correctly handling cases where LHS and RHS had multiple but different sign bits. llvm-svn: 210048
* InitLibcallNames can take a Triple instead of a TargetMachine.Eric Christopher2014-06-021-4/+4
| | | | llvm-svn: 210045
* Added support to optimize comparisons with "lshr exact" of a constant.Rafael Espindola2014-06-022-6/+37
| | | | | | Patch by Rahul Jain. llvm-svn: 210040
* Remove sanitizer blacklist from ASan/TSan/MSan function passes.Alexey Samsonov2014-06-024-49/+17
| | | | | | | | | | | | | | | | | Instrumentation passes now use attributes address_safety/thread_safety/memory_safety which are added by Clang frontend. Clang parses the blacklist file and adds the attributes accordingly. Currently blacklist is still used in ASan module pass to disable instrumentation for certain global variables. We should fix this as well by collecting the set of globals we're going to instrument in Clang and passing it to ASan in metadata (as we already do for dynamically-initialized globals and init-order checking). This change also removes -tsan-blacklist and -msan-blacklist LLVM commandline flags in favor of -fsanitize-blacklist= Clang flag. llvm-svn: 210038
* Omit else branch after return.Eric Christopher2014-06-021-2/+4
| | | | llvm-svn: 210034
* [X86] Fix checked arithmetic for i8 on X86.Andrea Di Biagio2014-06-022-2/+27
| | | | | | | | | | | When lowering a ISD::BRCOND into a test+branch, make sure that we always use the correct condition code to emit the test operation. This fixes PR19858: "i8 checked mul is wrong on x86". Patch by Keno Fisher! llvm-svn: 210032
* Add the nsw flag when we detect that an add will not signed overflow.Rafael Espindola2014-06-027-12/+17
| | | | | | | We already had a function for checking this, we were just using it only in specialized cases. llvm-svn: 210029
* [msan] Remove an out-of-date comment.Evgeniy Stepanov2014-06-021-2/+0
| | | | | | MSan is no longer an "early prototype". llvm-svn: 210023
* Remove path_tclsh.m4.Rafael Espindola2014-06-021-39/+0
| | | | | | Looks like it was only used by dejagnu and is now dead. llvm-svn: 210022
* [AArch64] Add some more regression tests for store pre-index update folding ↵Tilmann Scheller2014-06-021-0/+105
| | | | | | | | | | | | | | | | in the load/store optimizer. Add tests for the following transform: add x8, x8, #16 ... str X, [x8] -> str X, [x8, #16]! with X being either w0, x0, s0, d0 or q0. llvm-svn: 210021
* [msan] Handle x86 vector pack intrinsics.Evgeniy Stepanov2014-06-022-0/+74
| | | | llvm-svn: 210020
* [AArch64] Add some more regression tests for load pre-index update folding ↵Tilmann Scheller2014-06-021-0/+106
| | | | | | | | | | | | | | | | in the load/store optimizer. Add tests for the following transform: add x8, x8, #16 ... ldr X, [x8] -> ldr X, [x8, #16]! with X being either w0, x0, s0, d0 or q0. llvm-svn: 210018
* Added inst combine tarnsform for (1 << X) & C pattrens where C is (some ↵Dinesh Dwivedi2014-06-022-8/+41
| | | | | | | | | | | | PowerOf2 - 1) This patch can handles following cases from http://nondot.org/sabre/LLVMNotes/InstCombine.txt "((1 << X) & 7) == 0" ==> "X > 2" "((1 << X) & 7) != 0" ==> "X < 3". Differential Revision: http://reviews.llvm.org/D3678 llvm-svn: 210007
* Added inst combine transforms for single bit tests from Chris's noteDinesh Dwivedi2014-06-022-1/+133
| | | | | | | | | | | | if ((x & C) == 0) x |= C becomes x |= C if ((x & C) != 0) x ^= C becomes x &= ~C if ((x & C) == 0) x ^= C becomes x |= C if ((x & C) != 0) x &= ~C becomes x &= ~C if ((x & C) == 0) x &= ~C becomes nothing Differential Revision: http://reviews.llvm.org/D3777 llvm-svn: 210006
* Silence -Wreturn-type warningAlp Toker2014-06-021-0/+1
| | | | llvm-svn: 210005
* GraphWriter: tweak the program fallback orderAlp Toker2014-06-021-1/+1
| | | | | | | Amend r210001 to use the classic fallback order behaviour if the requested graphing program isn't found. llvm-svn: 210003
* GraphWriter: detect graph viewer programs at runtimeAlp Toker2014-06-029-374/+137
| | | | | | | | | | | | | | | | | | | | | | Replace the crufty build-time configure checks for program paths with equivalent runtime logic. This lets users install graphing tools as needed without having to reconfigure and rebuild LLVM, while eliminating a long chain of inappropriate compile dependencies that included GUI programs and the windowing system. Additional features: * Support the OS X 'open' command to view graphs generated by any of the Graphviz utilities. This is an alternative to the Graphviz OS X UI which is no longer available on Mountain Lion. * Produce informative log output upon failure to indicate which programs can be installed to view graphs. Ping me if this doesn't work for your particular environment. llvm-svn: 210001
OpenPOWER on IntegriCloud