mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-01 00:02:16 +00:00
Revert r64460. strtol and friends cannot be marked readonly, even with
a null endptr argument, because they may write to errno. This fixes a seflhost miscompile observed on Linux targets when TBAA was enabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122014 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2d8e3e741f
commit
c32046e6ea
@ -577,7 +577,8 @@ struct StrToOpt : public LibCallOptimization {
|
||||
|
||||
Value *EndPtr = CI->getArgOperand(1);
|
||||
if (isa<ConstantPointerNull>(EndPtr)) {
|
||||
CI->setOnlyReadsMemory();
|
||||
// With a null EndPtr, this function won't capture the main argument.
|
||||
// It would be readonly too, except that it still may write to errno.
|
||||
CI->addAttribute(1, Attribute::NoCapture);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt < %s -simplify-libcalls -S > %t
|
||||
; RUN: grep nocapture %t | count 2
|
||||
; RUN: grep null %t | grep nocapture | count 1
|
||||
; RUN: grep null %t | grep call | grep readonly | count 1
|
||||
; RUN: grep null %t | grep call | not grep readonly
|
||||
|
||||
; Test that we add nocapture to the declaration, and to the second call only.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user