Nikita Popov
f89f7da999
[IR] Convert null-pointer-is-valid into an enum attribute
...
The "null-pointer-is-valid" attribute needs to be checked by many
pointer-related combines. To make the check more efficient, convert
it from a string into an enum attribute.
In the future, this attribute may be replaced with data layout
properties.
Differential Revision: https://reviews.llvm.org/D78862
2020-05-15 19:41:07 +02:00
David Bolvansky
e80fcf0340
[SimplifyLibCalls] Mark known arguments with nonnull
...
Reviewers: efriedma, jdoerfert
Reviewed By: jdoerfert
Subscribers: ychen, rsmith, joerg, aaron.ballman, lebedev.ri, uenoku, jdoerfert, hfinkel, javed.absar, spatel, dmgreen, llvm-commits
Differential Revision: https://reviews.llvm.org/D53342
llvm-svn: 372091
2019-09-17 09:32:52 +00:00
David Bolvansky
f94460d4b6
[SLC] Dereferenceable annonation - handle valid null pointers
...
Reviewers: jdoerfert, reames
Reviewed By: jdoerfert
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66161
llvm-svn: 368884
2019-08-14 17:15:20 +00:00
David Bolvansky
0e0fbae1a4
[BuildLibCalls] Noalias annotation
...
Summary: I think this is better solution than annotating callsites in IC/SLC.
Reviewers: jdoerfert
Reviewed By: jdoerfert
Subscribers: MaskRay, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66217
llvm-svn: 368875
2019-08-14 16:50:06 +00:00
David Bolvansky
038d604f4f
[SimplifyLibCalls] Add noalias from known callsites
...
Summary:
Should be fine for memcpy, strcpy, strncpy.
Reviewers: jdoerfert, efriedma
Reviewed By: jdoerfert
Subscribers: uenoku, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66135
llvm-svn: 368724
2019-08-13 17:18:46 +00:00
David Bolvansky
dde10cd7a9
[NFC] Revisited/updated tests
...
llvm-svn: 368722
2019-08-13 17:07:02 +00:00
David Bolvansky
90a30fdcc3
[SLC] Improve dereferenceable bytes annotation
...
llvm-svn: 368715
2019-08-13 16:44:16 +00:00
David Bolvansky
39130314fe
[SimplifyLibCalls] Add dereferenceable bytes from known callsites
...
Summary:
int mm(char *a, char *b) {
return memcmp(a,b,16);
}
Currently:
define dso_local i32 @mm(i8* nocapture readonly %a, i8* nocapture readonly %b) local_unnamed_addr #1 {
entry:
%call = tail call i32 @memcmp(i8* %a, i8* %b, i64 16)
ret i32 %call
}
After patch:
define dso_local i32 @mm(i8* nocapture readonly %a, i8* nocapture readonly %b) local_unnamed_addr #1 {
entry:
%call = tail call i32 @memcmp(i8* dereferenceable(16) %a, i8* dereferenceable(16) %b, i64 16)
ret i32 %call
}
Reviewers: jdoerfert, efriedma
Reviewed By: jdoerfert
Subscribers: javed.absar, spatel, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66079
llvm-svn: 368657
2019-08-13 09:11:49 +00:00