- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Advanced Search
Oct 10 2019
Jul 30 2019
- Switched to LINK_COMPONENTS.
Jul 23 2019
Jul 20 2019
- {Scalar,ObjCARC} => {Scalar,ObjCARC}Opts.
Rebased onto latest git monorepo.
Jul 13 2019
Jul 12 2019
I checked this in at https://reviews.llvm.org/rL365897 but made a copy-paste mistake that referenced https://reviews.llvm.org/D31727 in the commit message instead of this differential. ):
Moved for-loop out of branch.
Apr 15 2019
Drive-by.
Jun 23 2018
- Would you mind re-upping this with full context?
May 30 2017
This was fixed this morning already :)
Adding davide since this was introduced in r303715.
Apr 16 2017
Apr 10 2017
Yes. This was my first foray into sparse, non-local DSE and exists as a back-up if for some reason PDSE doesn't make it in (the biggest concern now is speed).
Apr 5 2017
const refs.
Apr 4 2017
Mar 29 2017
- Partition each redundancy class of must-aliasing, same-sized stores into same-opcode, same-pointer-type subclasses. For instance, memmove(i8* %a, i8*, i32 1), store i8, i8* %a, and store i1, i1* (bitcast i8* %a to i1*) belong to the same redundancy class, but distinct subclasses. This is needed for PRE insertion to work.
- Use SSAUpdater to generate the PRE-inserted occurrence's pointer operand (and whichever phi nodes are needed).
- Extend computeCanBeAnt to account for unsplittable critical edges, e.g., lambda blocks that terminated by indirectbr.
- Add more tests from bugpoint.
Mar 23 2017
- Explain why leave lib funcs alone.
- Make test case FileChecks complete..
In D31304#709318, @davide wrote:In D31304#709304, @bryant wrote:What happens if there's a conflict between a meta-renamed function and originally named extern? For instance,
declare void @pluto() define void @dont_rename_lib_funcs(...) { ; metarenames to pluto. ... }?
If I understand your example correctly, that's a bug in the pass?
What I mean is that I don't see the reason for wanting to keep non-lib externs. Lib externs, on the other hand, need to stay un-renamed because some passes may behave differently in the presence of specific library functions. DSE, for instance, provides special handling for malloc-ed memory locations.
What happens if there's a conflict between a meta-renamed function and originally named extern? For instance,
In D31304#709218, @davide wrote:You want to do this for all the external functions, maybe?
Mar 11 2017
Mar 8 2017
Added test cases and fix-me cases.
It runs faster than before.
Feb 23 2017
Test filter with reversed zip.
- Allow operator-- when inner iterators are random access.
- Use boost's difference_type calculation, even though it's not morally correct.
- Support reverse iteration, if all the inner iterators support it.
Feb 22 2017
- PDSE actually PDSEs now.
- Added a test file.
Feb 19 2017
To-do.
Feb 13 2017
In D29865#674647, @dberlin wrote:In D29865#674642, @davide wrote:Also, it would be great if you can provide real examples of where this helps (e.g. how often do you expect this to trigger in practice, and why it matters).
I can provide cases :)
There are a lot of them.
It's PRE for stores.I assume you experimented enough with this to have a complete'ish pass somewhere out-of-tree. If so, did you run this on something to measure the impact?
I mentioned a lot of this to bryant yesterday, that these are things that we'd have to work through.
Side question: do you want this to be run as part of the default pipeline eventually? What's the compile time cost?
- Insert PDSE.cpp into the right place in CMakeLists.txt.
- Add copyright headers to impl and header files.
- Re-worded file-level summary a bit.
- -print-pdse is now -print-frg because that makes a bit more sense.
- Explain why BreakCriticalEdges is required.
Feb 11 2017
Feb 9 2017
Feb 8 2017
LGTM
Wrong window.
lgtm
Minor things.
Feb 7 2017
Reposting this with llvm-commits attached.
Jan 27 2017
Jan 25 2017
In D29046#653835, @dberlin wrote:An example where spliceabove is broken:
MemoryUse(0) use(a) 2= MemoryDef(1) store b 3 = MemoryDef(2) store aSplice store a above use a produces:
3 = MemoryDef(0) store a MemoryUse(3) use(a) 2= MemoryDef(1) store bThis would work in SSA, because you would just have two variables live at the same time.
However, it does not work for MemorySSA, because only one variable may be live at a time, and therefore, you need to update downwards as well.The only cases where the effects are truly local is when you splice into the middle of a block that has defs above or below you.
Jan 24 2017
Jan 23 2017
I thought that there'd be stuff to change in clang, compiler-rt, and libcxx, but nope. LGTM.
Jan 21 2017
- Add the missing target sub-components when expanding a target.
In D28855#652366, @bryant wrote:
- Further update is_llvm_target to is_omitted_target_lib. The former checks whether a component is part of a known target...
- Fix is_llvm_target's logic. Previously, it checked a component name (X86Utils, LanaiInstPrinter, so on) against fully qualified libnames (LLVMX86Utils, LLVMLanaiInstPrinter), which is incorrect. This is exactly the fix in D28869 by Chris.
Jan 19 2017
Trim away whitespace. Depends on D28869.
Just a quick reminder.
Jan 18 2017
LGTM with just one nit.
I'm not seeing any test cases for nsw/nuw eq/ne. Should/Can they be added?
Depends on D28855.
Note that this is the NFC part of D28086.
Jan 17 2017
This looks like the signed analogue of the unsigned case on line 1965. Since the unsigned case handles both ugt and ule (but makes the substitutions for ult), perhaps you could handle sle as well:
Jan 15 2017
I don't understand why you suggest WITHOUT_LLVMBUILD. We can just prune
llvmbuild.
ping.
Jan 10 2017
Should invariant.start be updated to declare nolias {}* @llvm.invariant.start.p0i8(i64 <size>, i8* nocapture <ptr>)? That way, the returned token is ensured not to mess with AA queries.
- Return a dummy MemLoc for invariant.end's first argument.
- Add tests.