summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Add missing const specifier to a const method.Evgeniy Stepanov2014-06-051-1/+1
| | | | llvm-svn: 210265
* [SystemZ] Do not install IfConverter pass at -O0Ulrich Weigand2014-06-051-1/+2
| | | | | | | | When not optimizing, do not run the IfConverter pass, this makes debugging more difficult (and causes a testsuite failure in DebugInfo/unconditional-branch.ll). llvm-svn: 210263
* [mips] Modify long branch for NaCl:Sasa Stankovic2014-06-051-6/+30
| | | | | | | | | * Move the instruction that changes sp outside of the branch delay slot. * Bundle-align the target of indirect branch. Differential Revision: http://llvm-reviews.chandlerc.com/D3928 llvm-svn: 210262
* Prevent hoisting the instruction whose def might be clobbered by the terminator.Sasa Stankovic2014-06-051-4/+11
| | | | llvm-svn: 210261
* Fix coverage for files with global constructors again. Adds a testcase to ↵Nick Lewycky2014-06-051-0/+10
| | | | | | the commit from r206671, as requested by David Blaikie. llvm-svn: 210239
* Revert r210221 again, due to a crash Richard Smith has provided involving ↵David Blaikie2014-06-051-2/+1
| | | | | | | | self-hosting LLVM with libc++. Test case coming, once I reduce it. llvm-svn: 210236
* DebugInfo: Reuse existing LexicalScope to retrieve the scope's MDNode, ↵David Blaikie2014-06-052-7/+2
| | | | | | | | | rather than looking it up through the DebugLoc. No functional change intended, just streamlines the abstract variable lookup/construction to use a common entry point. llvm-svn: 210234
* DebugInfo: Roll argument insertion into variable insertion to ensure ↵David Blaikie2014-06-051-6/+5
| | | | | | | | arguments are correctly handled in all cases. No functional change intended. llvm-svn: 210233
* PR19388: DebugInfo: Emit dead arguments in their originally declared order.David Blaikie2014-06-051-5/+6
| | | | | | | | | | | | | | | | | | | | | | | Unused arguments were not being added to the argument list, but instead treated as arbitrary scope variables. This meant they weren't carefully added in the original argument order. In this particular example, though, it turns out the argument is only /mostly/ unused (well, actually it's entirely used, but in a specific way). It's a struct that, due to ABI reasons, is decomposed into chunks (exactly one chunk, since it has one member) and then passed. Since only one of those chunks is used (SROA, etc, kill the original reconstitution code) we don't have a location to describe the whole variable. In this particular case, since the struct consists of just the one int, once we have partial location information, this should have a location that describes the entire variable (since the piece is the entirety of the object). And at some point we'll need to describe the location of even /entirely/ unused arguments so that they can at least be printed on function entry. llvm-svn: 210231
* DebugInfo: Add comments/assert description to r209674 based on Eric ↵David Blaikie2014-06-051-2/+4
| | | | | | Christopher's post-commit review feedback. llvm-svn: 210228
* We've got a getSlotSize call already that we use everywhere else,Eric Christopher2014-06-051-2/+3
| | | | | | use it here too. llvm-svn: 210227
* R600/SI: Match rsq instructionsMatt Arsenault2014-06-051-2/+6
| | | | llvm-svn: 210226
* 80-columns.Eric Christopher2014-06-051-1/+2
| | | | llvm-svn: 210224
* Remove uses of the TargetMachine from X86FrameLowering.Eric Christopher2014-06-053-19/+25
| | | | llvm-svn: 210223
* Use nullptrMatt Arsenault2014-06-051-3/+2
| | | | llvm-svn: 210222
* DebugInfo: Reapply r209984 (reverted in r210143), asserting that abstract ↵David Blaikie2014-06-043-14/+42
| | | | | | | | | | | | | | | | | DbgVariables have DIEs. Abstract variables within abstract scopes that are entirely optimized away in their first inlining are omitted because their scope is not present so the variable is never created. Instead, we should ensure the scope is created so the variable can be added, even if it's been optimized away in its first inlining. This fixes the incorrect debug info in missing-abstract-variable.ll (added in r210143) and passes an asserts self-hosting build, so hopefully there's not more of these issues left behind... *fingers crossed*. llvm-svn: 210221
* Explain why we skip DbgInfoIntrinsics when looking at line numbers in .gcno ↵Nick Lewycky2014-06-041-0/+4
| | | | | | file emission. llvm-svn: 210218
* Don't emit structors for available_externally globals (PR19933)Hans Wennborg2014-06-041-3/+8
| | | | | | | | | | | | We would previously assert here when trying to figure out the section for the global. This makes us handle the situation more gracefully since the IR isn't malformed. Differential Revision: http://reviews.llvm.org/D4022 llvm-svn: 210215
* Add a Constant version of stripPointerCasts.Rafael Espindola2014-06-043-5/+5
| | | | | | Thanks to rnk for the suggestion. llvm-svn: 210205
* Clauses in a landingpad are always Constant. Use a stricter type.Rafael Espindola2014-06-045-10/+10
| | | | llvm-svn: 210203
* Two small enhancements for the JIT.Yaron Keren2014-06-041-1/+6
| | | | | | | | | | When JITting a large project such as Boost it's quite hard to figure out the problematic inline asm without debug location. This patch provides debug location printout before the JIT aborts due to inline asm. printDebugLoc() was exposed from MachineInstr.cpp and reused here. If the JIT run with debug info, don't bomb on DBG_VALUE but ignore them. http://reviews.llvm.org/D3416 llvm-svn: 210201
* InstCombine: Improvement to check if signed addition overflows.Rafael Espindola2014-06-041-7/+46
| | | | | | | | | | | | | | | | | | This patch implements two things: 1. If we know one number is positive and another is negative, we return true as signed addition of two opposite signed numbers will never overflow. 2. Implemented TODO : If one of the operands only has one non-zero bit, and if the other operand has a known-zero bit in a more significant place than it (not including the sign bit) the ripple may go up to and fill the zero, but won't change the sign. e.x - (x & ~4) + 1 We make sure that we are ignoring 0 at MSB. Patch by Suyog Sarda. llvm-svn: 210186
* [AArch64] clang-format the load/store optimizer.Tilmann Scheller2014-06-041-16/+25
| | | | | | No change in functionality. llvm-svn: 210182
* [AArch64] Fix some LLVM Coding Standards violations in the load/store optimizer.Tilmann Scheller2014-06-041-19/+19
| | | | | | | | Variable names should start with an upper case letter. No change in functionality. llvm-svn: 210181
* Fix gcc -Wparentheses warning.Patrik Hagglund2014-06-041-1/+1
| | | | llvm-svn: 210178
* Fix a use of uninitialized value. OldCC is set when IsCmpZero || IsSwapped ↵Nick Lewycky2014-06-041-1/+1
| | | | | | and read when ShouldUpdateCC || IsSwapped, and ShouldUpdateCC is independent. Fixes PR19932, but no test since I wasn't able to get any symptoms to appear, not even with valgrind and the testcase from the PR. It's clear what happened from inspection of the code. llvm-svn: 210168
* Add a subtarget hook: enablePostMachineScheduler.Andrew Trick2014-06-045-3/+23
| | | | | | | | | | | | | | | As requested by AArch64 subtargets. Note that this will have no effect until the AArch64 target actually enables the pass like this: substitutePass(&PostRASchedulerID, &PostMachineSchedulerID); As soon as armv7 switches over, PostMachineScheduler will become the default postRA scheduler, so this won't be necessary any more. Targets using the old postRA schedule would then do: substitutePass(&PostMachineSchedulerID, &PostRASchedulerID); llvm-svn: 210167
* Move GenericScheduler and PostGenericScheduler into a header.Andrew Trick2014-06-041-229/+15
| | | | | | | | | | | | | | | | | | | | | | 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
* 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
* DebugInfo: Partial revert r209984 due to more cases where abstract ↵David Blaikie2014-06-041-1/+5
| | | | | | | | | | | | | | | 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-031-9/+18
| | | | | | | | 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-031-0/+1
| | | | | | 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-031-0/+2
| | | | | | | | | | | | 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
* [AArch64] Fix typo in load/store optimizer.Tilmann Scheller2014-06-031-1/+1
| | | | llvm-svn: 210114
* [asan] Fix coverage instrumentation with -asan-globals=0.Evgeniy Stepanov2014-06-031-25/+32
| | | | llvm-svn: 210103
* AArch64: mark small types (i1, i8, i16) as promotedTim Northover2014-06-033-21/+13
| | | | | | | | | 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
* Use an enum class.Rafael Espindola2014-06-031-4/+4
| | | | llvm-svn: 210078
* Use an enum class.Rafael Espindola2014-06-031-2/+2
| | | | | | Might also fix the windows build. llvm-svn: 210077
* Ignore line numbers on debug intrinsics. Add an assert to ensure that we ↵Nick Lewycky2014-06-031-2/+4
| | | | | | 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-031-3/+10
| | | | 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-0314-200/+137
| | | | | | | | | | | | | | | | | | | | | 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-021-4/+19
| | | | | | | | 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
* Revert "Add the nsw flag when we detect that an add will not signed overflow."Rafael Espindola2014-06-021-5/+0
| | | | | | | | | This reverts commit r210029. It was not correctly handling cases where LHS and RHS had multiple but different sign bits. llvm-svn: 210048
OpenPOWER on IntegriCloud