[PATCH] D158819: [builtins] Fix signed shift overflows in ashlti3.c, ashrti3.c, ashldi3.c and ashrdi3.c
Karl-Johan Karlsson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 27 21:47:18 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rG5ae3211b1051: [builtins] Fix signed shift overflows in ashlti3.c, ashrti3.c, ashldi3.c and… (authored by Ka-Ka).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D158819/new/
https://reviews.llvm.org/D158819
Files:
compiler-rt/lib/builtins/ashldi3.c
compiler-rt/lib/builtins/ashlti3.c
compiler-rt/lib/builtins/ashrdi3.c
compiler-rt/lib/builtins/ashrti3.c
Index: compiler-rt/lib/builtins/ashrti3.c
===================================================================
--- compiler-rt/lib/builtins/ashrti3.c
+++ compiler-rt/lib/builtins/ashrti3.c
@@ -31,7 +31,8 @@
if (b == 0)
return a;
result.s.high = input.s.high >> b;
- result.s.low = (input.s.high << (bits_in_dword - b)) | (input.s.low >> b);
+ result.s.low =
+ ((du_int)input.s.high << (bits_in_dword - b)) | (input.s.low >> b);
}
return result.all;
}
Index: compiler-rt/lib/builtins/ashrdi3.c
===================================================================
--- compiler-rt/lib/builtins/ashrdi3.c
+++ compiler-rt/lib/builtins/ashrdi3.c
@@ -29,7 +29,8 @@
if (b == 0)
return a;
result.s.high = input.s.high >> b;
- result.s.low = (input.s.high << (bits_in_word - b)) | (input.s.low >> b);
+ result.s.low =
+ ((su_int)input.s.high << (bits_in_word - b)) | (input.s.low >> b);
}
return result.all;
}
Index: compiler-rt/lib/builtins/ashlti3.c
===================================================================
--- compiler-rt/lib/builtins/ashlti3.c
+++ compiler-rt/lib/builtins/ashlti3.c
@@ -30,7 +30,8 @@
if (b == 0)
return a;
result.s.low = input.s.low << b;
- result.s.high = (input.s.high << b) | (input.s.low >> (bits_in_dword - b));
+ result.s.high =
+ ((du_int)input.s.high << b) | (input.s.low >> (bits_in_dword - b));
}
return result.all;
}
Index: compiler-rt/lib/builtins/ashldi3.c
===================================================================
--- compiler-rt/lib/builtins/ashldi3.c
+++ compiler-rt/lib/builtins/ashldi3.c
@@ -28,7 +28,8 @@
if (b == 0)
return a;
result.s.low = input.s.low << b;
- result.s.high = (input.s.high << b) | (input.s.low >> (bits_in_word - b));
+ result.s.high =
+ ((su_int)input.s.high << b) | (input.s.low >> (bits_in_word - b));
}
return result.all;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D158819.553833.patch
Type: text/x-patch
Size: 1944 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230828/c8d008ec/attachment.bin>
More information about the llvm-commits
mailing list