diff --git a/indra/llcommon/llevents.cpp b/indra/llcommon/llevents.cpp
index 0855180dcd66956a39048907311097a7c6b6abb1..1c928b3db890e54a3c3a665b381d897c2de3810b 100644
--- a/indra/llcommon/llevents.cpp
+++ b/indra/llcommon/llevents.cpp
@@ -41,7 +41,6 @@
 #include <algorithm>
 // std headers
 #include <typeinfo>
-#include <cassert>
 #include <cmath>
 #include <cctype>
 // external library headers
diff --git a/indra/llcommon/llmd5.cpp b/indra/llcommon/llmd5.cpp
index 1409c55d1c5080265eb93ffcfb670bad90917d3f..ed80af36d895231bb722eecee1bb180fb85dc0fd 100644
--- a/indra/llcommon/llmd5.cpp
+++ b/indra/llcommon/llmd5.cpp
@@ -76,7 +76,6 @@ documentation and/or software.
 
 #include "llmd5.h"
 
-#include <cassert>
 #include <iostream>		// cerr
 
 // how many bytes to grab at a time when checking files
diff --git a/indra/llcommon/llskipmap.h b/indra/llcommon/llskipmap.h
index 49ff2928d13b4a61111eccb30b72dd29167404fd..ed53973baa3427cdd54f78da798b88f52cff2a30 100644
--- a/indra/llcommon/llskipmap.h
+++ b/indra/llcommon/llskipmap.h
@@ -210,8 +210,7 @@ inline LLSkipMap<INDEX_TYPE, DATA_TYPE, BINARY_DEPTH>::LLSkipMap()
 	:	mInsertFirst(NULL),
 		mEquals(defaultEquals)
 {
-	// Skipmaps must have binary depth of at least 2
-	cassert(BINARY_DEPTH >= 2);
+	llstatic_assert(BINARY_DEPTH >= 2, "Skipmaps must have binary depth of at least 2");
 
 	S32 i;
 	for (i = 0; i < BINARY_DEPTH; i++)
@@ -229,8 +228,7 @@ inline LLSkipMap<INDEX_TYPE, DATA_TYPE, BINARY_DEPTH>::LLSkipMap(BOOL	(*insert_f
 	:	mInsertFirst(insert_first),
 		mEquals(equals)
 {
-	// Skipmaps must have binary depth of at least 2
-	cassert(BINARY_DEPTH >= 2);
+	llstatic_assert(BINARY_DEPTH >= 2, "Skipmaps must have binary depth of at least 2");
 
 	mLevel = 1;
 	S32 i;
diff --git a/indra/llcommon/llunit.h b/indra/llcommon/llunit.h
index 01e9eb751d42885de5ef258352ec92e85dbd5494..e57974c42947830af19f7676460689fc32721556 100644
--- a/indra/llcommon/llunit.h
+++ b/indra/llcommon/llunit.h
@@ -271,10 +271,11 @@ LLUnit<UNIT_TYPE, STORAGE_TYPE> operator * (LLUnit<UNIT_TYPE, STORAGE_TYPE> firs
 }
 
 template<typename UNIT_TYPE1, typename STORAGE_TYPE1, typename UNIT_TYPE2, typename STORAGE_TYPE2>
-void operator * (LLUnit<UNIT_TYPE1, STORAGE_TYPE1>, LLUnit<UNIT_TYPE2, STORAGE_TYPE2>)
+LLUnit<UNIT_TYPE1, STORAGE_TYPE1> operator * (LLUnit<UNIT_TYPE1, STORAGE_TYPE1>, LLUnit<UNIT_TYPE2, STORAGE_TYPE2>)
 {
 	// spurious use of dependent type to stop gcc from triggering the static assertion before instantiating the template
 	llstatic_assert(sizeof(STORAGE_TYPE1) == 0, "Multiplication of unit types results in new unit type - not supported.");
+	return LLUnit<UNIT_TYPE1, STORAGE_TYPE1>();
 }
 
 //
@@ -293,10 +294,10 @@ LLUnit<UNIT_TYPE, STORAGE_TYPE> operator / (LLUnit<UNIT_TYPE, STORAGE_TYPE> firs
 }
 
 template<typename UNIT_TYPE1, typename STORAGE_TYPE1, typename UNIT_TYPE2, typename STORAGE_TYPE2>
-void operator / (LLUnit<UNIT_TYPE1, STORAGE_TYPE1>, LLUnit<UNIT_TYPE2, STORAGE_TYPE2>)
+STORAGE_TYPE1 operator / (LLUnit<UNIT_TYPE1, STORAGE_TYPE1> first, LLUnit<UNIT_TYPE2, STORAGE_TYPE2> second)
 {
 	// spurious use of dependent type to stop gcc from triggering the static assertion before instantiating the template
-	llstatic_assert(sizeof(STORAGE_TYPE1) == 0, "Multiplication of unit types results in new unit type - not supported.");
+	return STORAGE_TYPE1(first.value() / second.value());
 }
 
 #define COMPARISON_OPERATORS(op)                                                                     \
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index ad9bec9f61e1e10d9b2e51de5a1c31662b5fa133..59577e95ac5f31c6ea99073b7212f7d246ff7fbd 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -30,7 +30,6 @@
 #define LLVIEW_CPP
 #include "llview.h"
 
-#include <cassert>
 #include <sstream>
 #include <boost/tokenizer.hpp>
 #include <boost/foreach.hpp>