summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Pharr <matt@pharr.org>2018-10-22 07:45:09 -0700
committerTim Foley <tfoleyNV@users.noreply.github.com>2018-10-22 07:45:09 -0700
commitcda9c3b1a712715209a3f4ba155c1425898334cb (patch)
tree9814bed442a388d8c1e025b07f92499b0ae0da2e
parent53731f674601a2eb81c5715957d2e0e65637aee3 (diff)
Osx build fixes (#681)
* Remove 'register' qualifiers. These will be illegal come c++17 and give a warning on OSX. * Add UNREACHABLE_RETURNs to silence compiler warnings. * Make FileStream::GetPosition() compile on OSX (w.r.t. the linux build, I believe that strictly-speaking, fpos64_t is specified as an opaque type and the cast to an Int64 is not necessarily well-defined.) * Avoid an inadvertent trigraph.
-rw-r--r--source/core/slang-math.h6
-rw-r--r--source/core/stream.cpp2
-rw-r--r--source/slang/lower-to-ir.cpp11
-rw-r--r--source/slang/vm.cpp4
4 files changed, 17 insertions, 6 deletions
diff --git a/source/core/slang-math.h b/source/core/slang-math.h
index e57cc68ff..6d6b3e7a1 100644
--- a/source/core/slang-math.h
+++ b/source/core/slang-math.h
@@ -63,7 +63,7 @@ namespace Slang
return isinf(x);
}
- static inline unsigned int Ones32(register unsigned int x)
+ static inline unsigned int Ones32(unsigned int x)
{
/* 32-bit recursive reduction using SWAR...
but first step is mapping 2-bit values
@@ -77,7 +77,7 @@ namespace Slang
return(x & 0x0000003f);
}
- static inline unsigned int Log2Floor(register unsigned int x)
+ static inline unsigned int Log2Floor(unsigned int x)
{
x |= (x >> 1);
x |= (x >> 2);
@@ -87,7 +87,7 @@ namespace Slang
return(Ones32(x >> 1));
}
- static inline unsigned int Log2Ceil(register unsigned int x)
+ static inline unsigned int Log2Ceil(unsigned int x)
{
int y = (x & (x - 1));
y |= -y;
diff --git a/source/core/stream.cpp b/source/core/stream.cpp
index f78e5af83..b705b13a1 100644
--- a/source/core/stream.cpp
+++ b/source/core/stream.cpp
@@ -134,6 +134,8 @@ namespace Slang
fpos_t pos;
fgetpos(handle, &pos);
return pos;
+#elif defined(__APPLE__)
+ return ftell(handle);
#else
fpos64_t pos;
fgetpos64(handle, &pos);
diff --git a/source/slang/lower-to-ir.cpp b/source/slang/lower-to-ir.cpp
index 5f3b00b24..1ee521e3b 100644
--- a/source/slang/lower-to-ir.cpp
+++ b/source/slang/lower-to-ir.cpp
@@ -676,7 +676,7 @@ LoweredValInfo emitCallToDeclRef(
#undef CASE
default:
SLANG_UNIMPLEMENTED_X("IR pseudo-op");
- break;
+ UNREACHABLE_RETURN(LoweredValInfo());
}
}
@@ -994,6 +994,7 @@ struct ValLoweringVisitor : ValVisitor<ValLoweringVisitor, LoweredValInfo, Lower
LoweredValInfo visitVal(Val* /*val*/)
{
SLANG_UNIMPLEMENTED_X("value lowering");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
LoweredValInfo visitGenericParamIntVal(GenericParamIntVal* val)
@@ -1446,11 +1447,13 @@ struct ExprLoweringVisitorBase : ExprVisitor<Derived, LoweredValInfo>
LoweredValInfo visitOverloadedExpr(OverloadedExpr* /*expr*/)
{
SLANG_UNEXPECTED("overloaded expressions should not occur in checked AST");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
LoweredValInfo visitOverloadedExpr2(OverloadedExpr2* /*expr*/)
{
SLANG_UNEXPECTED("overloaded expressions should not occur in checked AST");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
LoweredValInfo visitIndexExpr(IndexExpr* expr)
@@ -1498,6 +1501,7 @@ struct ExprLoweringVisitorBase : ExprVisitor<Derived, LoweredValInfo>
}
SLANG_UNIMPLEMENTED_X("codegen for subscript expression");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
// We will always lower a dereference expression (`*ptr`)
@@ -1662,6 +1666,7 @@ struct ExprLoweringVisitorBase : ExprVisitor<Derived, LoweredValInfo>
LoweredValInfo visitAggTypeCtorExpr(AggTypeCtorExpr* /*expr*/)
{
SLANG_UNIMPLEMENTED_X("codegen for aggregate type constructor expression");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
// After a call to a function with `out` or `in out`
@@ -2034,11 +2039,13 @@ struct ExprLoweringVisitorBase : ExprVisitor<Derived, LoweredValInfo>
LoweredValInfo visitGenericAppExpr(GenericAppExpr* /*expr*/)
{
SLANG_UNIMPLEMENTED_X("generic application expression during code generation");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
LoweredValInfo visitSharedTypeExpr(SharedTypeExpr* /*expr*/)
{
SLANG_UNIMPLEMENTED_X("shared type expression during code generation");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
LoweredValInfo visitAssignExpr(AssignExpr* expr)
@@ -5279,6 +5286,7 @@ IRInst* lowerSubstitutionArg(
else
{
SLANG_UNIMPLEMENTED_X("value cases");
+ UNREACHABLE_RETURN(nullptr);
}
}
@@ -5419,6 +5427,7 @@ LoweredValInfo emitDeclRef(
else
{
SLANG_UNEXPECTED("uhandled substitution type");
+ UNREACHABLE_RETURN(LoweredValInfo());
}
}
diff --git a/source/slang/vm.cpp b/source/slang/vm.cpp
index f5f5540f5..fa59a741b 100644
--- a/source/slang/vm.cpp
+++ b/source/slang/vm.cpp
@@ -415,11 +415,11 @@ void dumpVMFrame(VMFrame* vmFrame)
break;
case kIROp_HLSLRWStructuredBufferType:
- fprintf(stderr, ": RWStructuredBuffer<???> = ???");
+ fprintf(stderr, ": RWStructuredBuffer<??\?> = ???");
break;
case kIROp_HLSLStructuredBufferType:
- fprintf(stderr, ": StructuredBuffer<???> = ???");
+ fprintf(stderr, ": StructuredBuffer<??\?> = ???");
break;
case kIROp_BoolType: