search for: ipsccp

Displaying 20 results from an estimated 101 matches for "ipsccp".

2020 Jul 11
3
Bug in pass 'ipsccp' on function attribute 'argmemonly'?
Hi all, Let's see an example (from Alexandre Isoard) first: **************************************************************************************** ; RUN: opt -ipsccp -deadargelim -licm -O2 -S < %s @g = internal global i32 0 ; Function Attrs: argmemonly define internal void @foo(i32* nonnull dereferenceable(4) %arg, i32 %val) #0 { entry: store i32 %val, i32* %arg ret void } define i32 @bar(i32 %n) { entry: store i32 1, i32* @g br label %loop loop...
2020 Jul 14
3
Bug in pass 'ipsccp' on function attribute 'argmemonly'?
...ehalf, please let us know. > > -Hal > On 7/10/20 9:04 PM, Fangqing Du via llvm-dev wrote: > > Hi all, > > Let's see an example (from Alexandre Isoard) first: > > **************************************************************************************** > ; RUN: opt -ipsccp -deadargelim -licm -O2 -S < %s > > @g = internal global i32 0 > > ; Function Attrs: argmemonly > define internal void @foo(i32* nonnull dereferenceable(4) %arg, i32 %val > ) #0 { > entry: > store i32 %val, i32* %arg > ret void > } > > define i32 @bar(i32 %...
2010 Jan 06
1
[LLVMdev] ipsccp vs getelementptr
...r, i32 0, i32 0)) nounwind %c = icmp eq i8* %p, getelementptr ([1 x i8]* @str, i32 1, i32 0) br i1 %c, label %pass, label %fail fail: tail call void @abort() noreturn nounwind unreachable pass: ret i32 0 } declare void @abort() appears to be mis-optimised by "opt -ipsccp" into this: define internal i8* @f(i8* %p) nounwind readnone { ret i8* undef } define i32 @main() nounwind { %p = call i8* @f(i8* getelementptr ([1 x i8]* @str, i32 0, i32 0)) nounwind br label %fail fail: tail call void @abort() noreturn nounwind unreachable }...
2020 Jul 15
2
Bug in pass 'ipsccp' on function attribute 'argmemonly'?
...ive more opportunities for >> optimization. >> But we shouldn't depend on 'attributor' to correct wrong function >> attributes, because we cannot run 'attributor' after every pass, right? > > Correct. Each pass must be correct on its own. We need to fix ipsccp. > I don't think that was ever questioned ;) I think the comment about the Attributor was more to show that this behavior is not the same there which is yet another good indicator this is a bug. ~ Johannes >  -Hal > > >> >> Thanks, >> Fangqing >> >&g...
2016 May 04
3
status of IPO/IPCP?
Sean Silva via llvm-dev <llvm-dev at lists.llvm.org> writes: > No tests fail with the patch below, so I would say it's pretty useless. It > seems that the C bindings are the only user but we can probably just have them > return IPSCCP instead. I don't necessarily think your conclusion is wrong, but the patch isn't proving what you think it's proving. In fact, the below passes all tests as well. When you call passes through `opt` they don't end up calling through the createXYZPass path. diff --git a/lib/Transfor...
2016 May 03
2
status of IPO/IPCP?
The pass is pretty rudimental (as the comment at the top of the file hints), and it seems LLVM already has IPSCCP (which should do a better job at interprocedural constant propagation). I'm also not entirely sure it's used anywhere. Is there any reason to keep it around? Thanks, -- Davide "There are no solved problems; there are only problems that are more or less solved" -- Henri Poincar...
2006 May 10
2
[LLVMdev] SCCP
...tice values >> calculated by SCCP. Should I split the current SCCP optimization into an >> analysis piece and the optimization that depends on it, so that I can >> use its analysis results? > > SCCP is already split into an SCCPSolver class that is used by the SCCP > and IPSCCP classes. You should just be able to use SCCPSolver. Note > that it is not a pass, just a class you can use. Thanks. I thought SCCPSolver was just a helper. I suppose then I should just move its class declaration into a header so it can be seen from outside SCCP.cpp. Would creating a new inclu...
2011 Dec 30
1
[LLVMdev] Safe Passes
...pass or the generated code? I imagine all passes which either removes data or add attributes are included in this list, plus some simplification passes: -adce -argpromotion -constmerge -constprop -deadargelim -dse -functionattrs -globaldce -globalopt -gvn -instcombine -internalize -ipconstprop -ipsccp -licm -prune-eh -sccp Also, is there any redundant pass in this list (things line sccp/ipsccp)?
2006 May 10
0
[LLVMdev] SCCP
...; calculated by SCCP. Should I split the current SCCP optimization into an >>> analysis piece and the optimization that depends on it, so that I can >>> use its analysis results? >> >> SCCP is already split into an SCCPSolver class that is used by the SCCP >> and IPSCCP classes. You should just be able to use SCCPSolver. Note >> that it is not a pass, just a class you can use. > > Thanks. I thought SCCPSolver was just a helper. I suppose then I should > just move its class declaration into a header so it can be seen from > outside SCCP.cpp. Wou...
2020 Aug 19
2
The value of padding when storing an aggregate into memory
...e of padding when an aggregate value is stored into memory, and I'd like to suggest that storing an aggregate fills padding with undef. Here are a few clues that supports this change: - According to C17, the value of padding bytes when storing values in structures or unions is unspecified. - IPSCCP ignores padding and directly stores a constant aggregate if possible: https://godbolt.org/z/ddWq9z Memcpyopt ignores padding when copying an aggregate or storing a constant: https://godbolt.org/z/hY6ndd / https://godbolt.org/z/3WMP5a - Alive2 (with store operation updated) did not find any problem...
2020 Jul 27
5
Removing IPConstantPropagation.cpp
Hi, As far as I know, the ipconstprop pass has not been actively used in years and ipsccp has been used instead. This has the potential for confusion and sometimes leads people to spend time finding & reporting bugs as well as updating it to work with the latest API changes. If there are people actively using it, I would love to hear. If no-ones using it, I’d propose to remove the...
2006 May 10
2
[LLVMdev] SCCP
...CCP optimization >>>> into an >>>> analysis piece and the optimization that depends on it, so that I can >>>> use its analysis results? >>> >>> >>> SCCP is already split into an SCCPSolver class that is used by the SCCP >>> and IPSCCP classes. You should just be able to use SCCPSolver. Note >>> that it is not a pass, just a class you can use. >> >> >> Thanks. I thought SCCPSolver was just a helper. I suppose then I should >> just move its class declaration into a header so it can be seen from &...
2009 Sep 05
3
[LLVMdev] tblgen bug in handling case , switch_on
Hi, On Sat, Sep 5, 2009 at 9:12 PM, Sanjiv Gupta<sanjiv.gupta at microchip.com> wrote: > Is the patch below ok? > > Index: LLVMCConfigurationEmitter.cpp > =================================================================== > --- LLVMCConfigurationEmitter.cpp    (revision 80668) > +++ LLVMCConfigurationEmitter.cpp    (working copy) > @@ -1141,6 +1141,7 @@ >          
2020 Aug 19
2
The value of padding when storing an aggregate into memory
Hello Alexander, > Interesting topic. Is any such optimization reachable from C? Yes, I think so - both PassBuilder and PassManagerBuilder add MemCpyOpt & IPSCCP in the default pass pipeline. Juneyoung On Wed, Aug 19, 2020 at 8:43 PM Alexander Cherepanov <ch3root at openwall.com> wrote: > On 19/08/2020 06.05, Juneyoung Lee via llvm-dev wrote: > > LangRef isn't clear about the value of padding when an aggregate value is > > stored...
2009 Jan 25
0
[LLVMdev] -O4 limitations in llvm/llvm-gcc-4.2 2.5?
...d better luck compiling all of pymol 1.1r2 with > -O4 on darwin9. Everythink links and there appears to be > no regressions in the resulting code. I take it that LTO > in llvm 2.5 is still limited to dead code elimination, > correct? No. libLTO does the equivalent to opt -internalize -ipsccp -globalopt -constmerge -deadargelim -instcombine -inline -prune-eh -globaldce -argpromotion -instcombine -jump-threading -scalarrepl -globalsmodref-aa -licm -gvn -memcpyopt -dse -instcombine -jump-threading -mem2reg -simplifycfg -globaldce Will LTO ever be extended to inlining across > fi...
2009 Jan 25
2
[LLVMdev] -O4 limitations in llvm/llvm-gcc-4.2 2.5?
I've had better luck compiling all of pymol 1.1r2 with -O4 on darwin9. Everythink links and there appears to be no regressions in the resulting code. I take it that LTO in llvm 2.5 is still limited to dead code elimination, correct? Will LTO ever be extended to inlining across files as well as constant-folding and global data allocation optimizations? Or does the reliance on gcc-4.2 as the
2017 Oct 27
3
RFC: We need to explicitly state that some functions are reserved by LLVM
On 10/26/2017 10:56 PM, Chris Lattner via llvm-dev wrote: > >> On Oct 26, 2017, at 8:14 PM, Chandler Carruth via llvm-dev >> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >> >> >> One alternative that seems appealing but doesn't actually help would >> be to make `TargetLibraryInfo` ignore internal functions. That is
2020 Jul 02
2
flags to reproduce clang -O3 with opt -O3
...f getting the opt -O3 multi-step to match the clang -O3 result. Any thoughts or insights are appreciated. Below is a sorted list of the flags missing from each for completeness. not contained in 1pass O3 (count=18) -aa-scalar-evolution -always-inline -callsite-splitting -inject-tli-mappings -ipsccp -jump-threading-correlated-propagation -livedebugvalues -loops-loop-simplify -memdep-lazy-branch-prob -openmpopt -opt-remark-emitter-instcombine -regallocfast -speculative-execution -stackmap-liveness -tbaa-scoped-noalias -vector-combine -verify -write-bitcode not contained in multi O...
2020 Jul 03
2
flags to reproduce clang -O3 with opt -O3
...w is a sorted list of the >> flags missing from each for completeness. >> >> not contained in 1pass O3 (count=18) >> >> -aa-scalar-evolution >> >> -always-inline >> >> -callsite-splitting >> >> -inject-tli-mappings >> >> -ipsccp >> >> -jump-threading-correlated-propagation >> >> -livedebugvalues >> >> -loops-loop-simplify >> >> -memdep-lazy-branch-prob >> >> -openmpopt >> >> -opt-remark-emitter-instcombine >> >> -regallocfast >> >&...
2020 Apr 05
3
Branch is not optimized because of right shift
...cally the original C source code built with `clang -O0 -S -emit-llvm`, followed by running `opt -mem2reg`). There’s a patch under review that adds support for conditional range propagation ( https://reviews.llvm.org/D76611) and with the patch it can be simplified to the code below by running `opt -ipsccp -simplifycfg -instcombine` > > define i32 @test(i32 %0) { > %.off = add i32 %0, -16 > %2 = icmp ult i32 %.off, 12 > %spec.select = select i1 %2, i32 66, i32 45 > ret i32 %spec.select > } > > > The reason it does not yet work in the default pipeline is that the...