diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-06-08 19:47:25 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-06-08 19:47:25 +0000 |
commit | 5e370850d451bf78c1f393ec9e3cdabb2a050b40 (patch) | |
tree | c2f991e74850eac47f37eaa0aae63c052c272d22 /llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll | |
parent | 3271d3704a5dc3b5079f5ae1aba24e4c55c3908d (diff) | |
download | bcm5719-llvm-5e370850d451bf78c1f393ec9e3cdabb2a050b40.tar.gz bcm5719-llvm-5e370850d451bf78c1f393ec9e3cdabb2a050b40.zip |
[CGP] don't expand a memcmp with nobuiltin attribute
This matches the behavior used in the SDAG when expanding memcmp.
For reference, we're intentionally treating the earlier fortified call transforms differently after:
https://bugs.llvm.org/show_bug.cgi?id=23093
https://reviews.llvm.org/rL233776
One motivation for not transforming nobuiltin calls is that it can interfere with sanitizers:
https://reviews.llvm.org/D19781
https://reviews.llvm.org/D19801
Differential Revision: https://reviews.llvm.org/D34043
llvm-svn: 305007
Diffstat (limited to 'llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll')
-rw-r--r-- | llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll b/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll index d6ce5688c66..9e5a31d00b6 100644 --- a/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll +++ b/llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll @@ -199,12 +199,21 @@ define signext i32 @zeroEqualityTest06() { define i1 @length2_eq_nobuiltin_attr(i8* %X, i8* %Y) { ; CHECK-LABEL: length2_eq_nobuiltin_attr: ; CHECK: # BB#0: -; CHECK-NEXT: lhz 3, 0(3) -; CHECK-NEXT: lhz 4, 0(4) -; CHECK-NEXT: li 5, 0 -; CHECK-NEXT: li 12, 1 -; CHECK-NEXT: cmpw 3, 4 -; CHECK-NEXT: isel 3, 12, 5, 2 +; CHECK-NEXT: mflr 0 +; CHECK-NEXT: std 0, 16(1) +; CHECK-NEXT: stdu 1, -32(1) +; CHECK-NEXT: .Lcfi0: +; CHECK-NEXT: .cfi_def_cfa_offset 32 +; CHECK-NEXT: .Lcfi1: +; CHECK-NEXT: .cfi_offset lr, 16 +; CHECK-NEXT: li 5, 2 +; CHECK-NEXT: bl memcmp +; CHECK-NEXT: nop +; CHECK-NEXT: cntlzw 3, 3 +; CHECK-NEXT: rlwinm 3, 3, 27, 31, 31 +; CHECK-NEXT: addi 1, 1, 32 +; CHECK-NEXT: ld 0, 16(1) +; CHECK-NEXT: mtlr 0 ; CHECK-NEXT: blr %m = tail call signext i32 @memcmp(i8* %X, i8* %Y, i64 2) nobuiltin %c = icmp eq i32 %m, 0 |