- Mar 25, 2015
-
-
Justin Bogner authored
In r233009 we gained specific check-llvm-* build targets for invoking specific parts of the test suite, but they were copying the dependencies for check-all, rather than just listing the dependencies for check-llvm. This moves the creation of these targets next to the check-llvm target, and uses that target's configuration rather than the check-all config. llvm-svn: 233174
-
Rafael Espindola authored
llvm-svn: 233171
-
Craig Topper authored
[X86] Remove GetCpuIDAndInfo, GetCpuIDAndInfoEx and DetectFamilyModel functions from X86 MC layer. They haven't been used since CPU autodetection was removed from X86Subtarget.cpp. llvm-svn: 233170
-
Lang Hames authored
llvm-svn: 233168
-
Lang Hames authored
target-independent callback management. This is a prerequisite for adding orc-based lazy-jitting to lli. llvm-svn: 233166
-
Duncan P. N. Exon Smith authored
At least one Linux bot [1] doesn't like my dwarfdump checks, so I've disable those until I can investigate what's going on there. I'll continue to track this in PR22792. [1]: http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/22863 llvm-svn: 233165
-
Duncan P. N. Exon Smith authored
Instead of dropping subprograms that have been overridden, just set their function pointers to `nullptr`. This is a minor adjustment to the stop-gap fix for PR21910 committed in r224487, and fixes the crasher from PR22792. The problem that r224487 put a band-aid on: how do we find the canonical subprogram for a `Function`? Since the backend currently relies on `DebugInfoFinder` (which does a naive in-order traversal of compile units and picks the first subprogram) for this, r224487 tried dropping non-canonical subprograms. Dropping subprograms fails because the backend *also* builds up a map from subprogram to compile unit (`DwarfDebug::SPMap`) based on the subprogram lists. A missing subprogram causes segfaults later when an inlined reference (such as in this testcase) is created. Instead, just drop the `Function` pointer to `nullptr`, which nicely mirrors what happens when an already-inlined `Function` is optimized out. We can't really be sure that it's the same definition anyway, as the testcase demonstrates. This still isn't completely satisfactory. Two flaws at least that I can think of: - I still haven't found a straightforward way to make this symmetric in the IR. (Interestingly, the DWARF output is already symmetric, and I've tested for that to be sure we don't regress.) - Using `DebugInfoFinder` to find the canonical subprogram for a function is kind of crazy. We should just attach metadata to the function, like this: define weak i32 @foo(i32, i32) !dbg !MDSubprogram(...) { llvm-svn: 233164
-
Chandler Carruth authored
a subsequent commit in Clang. llvm-svn: 233159
-
Rafael Espindola authored
llvm-svn: 233158
-
Rafael Espindola authored
llvm-svn: 233155
-
Paul Robinson authored
Reverts the code change from r221168 and the relevant test. It was a mistake to disable the combiner, and based on the ultimate definition of 'optnone' we shouldn't have considered the test case as failing in the first place. llvm-svn: 233153
-
Philip Reames authored
A load from an invariant location is assumed to not alias any otherwise potentially aliasing stores. Our implementation only applied this rule to store instructions themselves whereas they it should apply for any memory accessing instruction. This results in both FRE and PRE becoming more effective at eliminating invariant loads. Note that as a follow on change I will likely move this into AliasAnalysis itself. That's where the TBAA constant flag is handled and the semantics are essentially the same. I'd like to separate the semantic change from the refactoring and thus have extended the hack that's already in MemoryDependenceAnalysis for this change. Differential Revision: http://reviews.llvm.org/D8591 llvm-svn: 233140
-
Rafael Espindola authored
In a subtraction of the form A - B, if B is weak, there is no way to represent that on ELF since all relocations add the value of a symbol. llvm-svn: 233139
-
Reid Kleckner authored
We can't use TargetFrameLowering::getFrameIndexOffset directly, because Win64 really wants the offset from the stack pointer at the end of the prologue. Instead, use X86FrameLowering::getFrameIndexOffsetFromSP(), which is a pretty close approximiation of that. It fails to handle cases with interestingly large stack alignments, which is pretty uncommon on Win64 and is TODO. llvm-svn: 233137
-
Justin Bogner authored
llvm-svn: 233134
-
Andrew Kaylor authored
Differential Revision: http://reviews.llvm.org/D8572 llvm-svn: 233133
-
Justin Bogner authored
A while ago llvm-cov gained support for clang's instrumentation based profiling in addition to its gcov support, and subcommands were added to choose which behaviour to use. When no subcommand was specified, we fell back to gcov compatibility with a warning that a subcommand would be required in the future. Now, we require the subcommand. Note that if the basename of llvm-cov is gcov (via symlink or hardlink, for example), we still use the gcov compatible behaviour with no subcommand required. llvm-svn: 233132
-
David Blaikie authored
The changes to InstCombine (& SCEV) do seem a bit silly - it doesn't make anything obviously better to have the caller access the pointers element type (the thing I'm trying to remove) than the GEP itself, but it's a helpful migration step. This will allow me to more obviously lock down GEP (& Load, etc) API usage, then fix all the code that accesses pointer element types except the places that need to be removed (most of the InstCombines) anyway - at which point I'll need to just remove all that code because it won't be meaningful anymore (there will be no pointer types, so no bitcasts to combine) SCEV looks like it'll need some restructuring - we'll have to do a bit more work for GEP canonicalization, since it'll depend on how it's used if we can even manage to canonicalize it to a non-ugly GEP. I guess we can do some fun stuff like voting (do 2 out of 3 load from the GEP with a certain type that gives a pretty GEP? Does every typed use of the GEP use either a specific type or a generic type (i8*, etc)?) llvm-svn: 233131
-
Frederic Riss authored
It seems one windows bot fails since I added ilne table linking to llvm-dsymutil (see r232333 commit thread). Disable the affected tests until I can figure out what's happening. llvm-svn: 233130
-
- Mar 24, 2015
-
-
Sanjay Patel authored
...because this is what happens when an instruction set puts its underwear on after its pants. This is an extension of r232852, r233100, and 233110: http://llvm.org/viewvc/llvm-project?view=revision&revision=232852 http://llvm.org/viewvc/llvm-project?view=revision&revision=233100 http://llvm.org/viewvc/llvm-project?view=revision&revision=233110 llvm-svn: 233127
-
David Blaikie authored
The changes to InstCombine do seem a bit silly - it doesn't make anything obviously better to have the caller access the pointers element type (the thing I'm trying to remove) than the GEP itself, but it's a helpful migration step. This will allow me to more obviously lock down GEP (& Load, etc) API usage, then fix all the code that accesses pointer element types except the places that need to be removed (most of the InstCombines) anyway - at which point I'll need to just remove all that code because it won't be meaningful anymore (there will be no pointer types, so no bitcasts to combine) llvm-svn: 233126
-
Philip Reames authored
This patch tries to merge duplicate landing pads when they branch to a common shared target. Given IR that looks like this: lpad1: %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0 cleanup br label %shared_resume lpad2: %exn2 = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0 cleanup br label %shared_resume shared_resume: call void @fn() ret void } We can rewrite the users of both landing pad blocks to use one of them. This will generally allow the shared_resume block to be merged with the common landing pad as well. Without this change, tail duplication would likely kick in - creating N (2 in this case) copies of the shared_resume basic block. Differential Revision: http://reviews.llvm.org/D8297 llvm-svn: 233125
-
Rafael Espindola authored
Otherwise the tests would fail if the default was not elf_x86_64. This fixes PR22966. Patch by H.J. Lu! llvm-svn: 233124
-
David Blaikie authored
Assertion fires in compiler-rt. Guess it does fire.. This reverts commit r233116. llvm-svn: 233121
-
Rafael Espindola authored
This fixes PR21515. llvm-svn: 233120
-
Peter Collingbourne authored
This code depended on a bug in the FindAssociatedSection function that would cause it to return the wrong result for certain absolute expressions. Instead, use EvaluateAsRelocatable. llvm-svn: 233119
-
Peter Collingbourne authored
llvm-svn: 233118
-
David Blaikie authored
Assert that this doesn't fire - I'll remove all of this later, but just leaving it in for a while in case this is firing & we just don't have test coverage. llvm-svn: 233116
-
Sanjay Patel authored
This is the IR optimizer follow-on patch for D8563: the x86 backend patch that converts this kind of shuffle back into a vperm2. This is also a continuation of the transform that started in D8486. In that patch, Andrea suggested that we could convert vperm2 intrinsics that use zero masks into a single shuffle. This is an implementation of that suggestion. Differential Revision: http://reviews.llvm.org/D8567 llvm-svn: 233110
-
Rafael Espindola authored
Patch by Keyue Hu (Chilledheart)! llvm-svn: 233107
-
Hans Wennborg authored
This caused PR23008, compiles failing with: "Use still stuck around after Def is destroyed: %.sroa.speculated" Also reverting follow-up r233064. llvm-svn: 233105
-
Sanjoy Das authored
IRCE requires the induction variables it handles to not sign-overflow. The current scheme of checking if sext({X,+,S}) == {sext(X),+,sext(S)} fails when SCEV simplifies sext(X) too. After this change we //also// check no-signed-wrap by looking at the flags set on the SCEVAddRecExpr. llvm-svn: 233102
-
Sanjoy Das authored
IRCE should not try to eliminate range checks that check an induction variable against a loop-varying length. llvm-svn: 233101
-
Sanjay Patel authored
vperm2x128 instructions have the special ability (aka free hardware capability) to shuffle zero values into a vector. This patch recognizes that type of shuffle and generates the appropriate control byte. https://llvm.org/bugs/show_bug.cgi?id=22984 Differential Revision: http://reviews.llvm.org/D8563 llvm-svn: 233100
-
Duncan P. N. Exon Smith authored
Move definition of `MDLocation` after `MDLocalScope` so that the latter is available for casts in the former. Similarly, move the definition of `MDFile` as early as possible so that other classes can cast to it in their definitions. (Follow-up commits will take advantage of this.) llvm-svn: 233096
-
Duncan P. N. Exon Smith authored
The main verifier already recurses through the other entry points, so we might as well descend here too. This temporarily duplicates some work already done in `verifyDebugInfo()`, but eventually I'll be removing the other side. llvm-svn: 233095
-
Duncan P. N. Exon Smith authored
Duplicate this check from `verifyDebugInfo()`. llvm-svn: 233094
-
Duncan P. N. Exon Smith authored
Add a subclass of `MDScope` to explicitly categorize the legal scopes for locals -- in particular, scopes that are legal for `MDLocation`, `MDLexicalBlockBase`, and `MDLocalVariable`. This provides a convenient `isa<>` target for the verifier, and eventually I'll be changing the above classes' `getScope()` to specifically return it. Currently, its subclasses are `MDSubprogram`, `MDLexicalBlock`, and `MDLexicalBlockFile`. I've gone with `MDLocalScope` for now -- a little ambiguous since it's a scope *for* locals, not a scope that's local -- but I'm open to more descriptive names if someone can think of something better. Regardless, the code docs should make it clear enough. llvm-svn: 233092
-
David Blaikie authored
Simplify boolean expressions using `true` and `false` with `clang-tidy` Patch by Richard Thomson. Reviewed By: nlewycky Differential Revision: http://reviews.llvm.org/D8528 llvm-svn: 233091
-
David Blaikie authored
Simplify boolean expressions using `true` and `false` with `clang-tidy` Patch by Richard Thomson. Reviewed By: rengolin Differential Revision: http://reviews.llvm.org/D8525 llvm-svn: 233089
-