allowed static and disable memcpy/memmove/memset operations
This commit is contained in:
@@ -1954,46 +1954,24 @@ declare void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src,
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* %dest, i8* %src,
|
||||
i64 %len, i32 %align, i1 %isvolatile)
|
||||
|
||||
define void @__memcpy32(i8 * %dst, i8 * %src, i32 %len) alwaysinline {
|
||||
call void @llvm.memcpy.p0i8.p0i8.i32(i8 * %dst, i8 * %src, i32 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @__memcpy64(i8 * %dst, i8 * %src, i64 %len) alwaysinline {
|
||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8 * %dst, i8 * %src, i64 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
declare void @__memcpy32(i8 * %dst, i8 * %src, i32 %len) alwaysinline;
|
||||
declare void @__memcpy64(i8 * %dst, i8 * %src, i64 %len) alwaysinline;
|
||||
|
||||
declare void @llvm.memmove.p0i8.p0i8.i32(i8* %dest, i8* %src,
|
||||
i32 %len, i32 %align, i1 %isvolatile)
|
||||
declare void @llvm.memmove.p0i8.p0i8.i64(i8* %dest, i8* %src,
|
||||
i64 %len, i32 %align, i1 %isvolatile)
|
||||
|
||||
define void @__memmove32(i8 * %dst, i8 * %src, i32 %len) alwaysinline {
|
||||
call void @llvm.memmove.p0i8.p0i8.i32(i8 * %dst, i8 * %src, i32 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @__memmove64(i8 * %dst, i8 * %src, i64 %len) alwaysinline {
|
||||
call void @llvm.memmove.p0i8.p0i8.i64(i8 * %dst, i8 * %src, i64 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
declare void @__memmove32(i8 * %dst, i8 * %src, i32 %len) alwaysinline;
|
||||
declare void @__memmove64(i8 * %dst, i8 * %src, i64 %len) alwaysinline
|
||||
|
||||
declare void @llvm.memset.p0i8.i32(i8* %dest, i8 %val, i32 %len, i32 %align,
|
||||
i1 %isvolatile)
|
||||
declare void @llvm.memset.p0i8.i64(i8* %dest, i8 %val, i64 %len, i32 %align,
|
||||
i1 %isvolatile)
|
||||
|
||||
define void @__memset32(i8 * %dst, i8 %val, i32 %len) alwaysinline {
|
||||
call void @llvm.memset.p0i8.i32(i8 * %dst, i8 %val, i32 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @__memset64(i8 * %dst, i8 %val, i64 %len) alwaysinline {
|
||||
call void @llvm.memset.p0i8.i64(i8 * %dst, i8 %val, i64 %len, i32 0, i1 0)
|
||||
ret void
|
||||
}
|
||||
declare void @__memset32(i8 * %dst, i8 %val, i32 %len) alwaysinline ;
|
||||
declare void @__memset64(i8 * %dst, i8 %val, i64 %len) alwaysinline;
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
4
stmt.cpp
4
stmt.cpp
@@ -268,8 +268,8 @@ DeclStmt::EmitCode(FunctionEmitContext *ctx) const {
|
||||
if (sym->storageClass == SC_STATIC) {
|
||||
|
||||
if (g->target->getISA() == Target::NVPTX && !sym->type->IsConstType())
|
||||
Error(sym->pos,
|
||||
"Non-constant static variable ""\"%s\" is not supported with ""\"nvptx\" target.",
|
||||
PerformanceWarning(sym->pos,
|
||||
"Non-constant static variable ""\"%s\" is stored in __global address sace with ""\"nvptx\" target.",
|
||||
sym->name.c_str());
|
||||
if (g->target->getISA() == Target::NVPTX && sym->type->IsVaryingType())
|
||||
PerformanceWarning(sym->pos,
|
||||
|
||||
Reference in New Issue
Block a user