mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:39:47 +00:00
[LIR] Set attributes on memset_pattern16.
"inferattrs" will deduce the attribute, but it will be too late for many optimizations. Set it ourselves when creating the call. Differential Revision: http://reviews.llvm.org/D17598 llvm-svn: 267762
This commit is contained in:
parent
837b4a5338
commit
591dc29993
@ -53,6 +53,7 @@
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Transforms/Utils/BuildLibCalls.h"
|
||||
#include "llvm/Transforms/Utils/Local.h"
|
||||
#include "llvm/Transforms/Utils/LoopUtils.h"
|
||||
using namespace llvm;
|
||||
@ -769,6 +770,7 @@ bool LoopIdiomRecognize::processLoopStridedStore(
|
||||
Value *MSP =
|
||||
M->getOrInsertFunction("memset_pattern16", Builder.getVoidTy(),
|
||||
Int8PtrTy, Int8PtrTy, IntPtr, (void *)nullptr);
|
||||
inferLibFuncAttributes(*M->getFunction("memset_pattern16"), *TLI);
|
||||
|
||||
// Otherwise we should form a memset_pattern16. PatternValue is known to be
|
||||
// an constant array of 16-bytes. Plop the value into a mergable global.
|
||||
|
@ -564,3 +564,7 @@ for.end6: ; preds = %for.inc4
|
||||
; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* %X, i8 0, i64 10000, i32 1, i1 false)
|
||||
; CHECK: ret void
|
||||
}
|
||||
|
||||
; Validate that "memset_pattern" has the proper attributes.
|
||||
; CHECK: declare void @memset_pattern16(i8* nocapture, i8* nocapture readonly, i64) [[ATTRS:#[0-9]+]]
|
||||
; CHECK: [[ATTRS]] = { argmemonly }
|
||||
|
Loading…
Reference in New Issue
Block a user