diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 58a64a87551569bff85d1288e51a5280055fbf98..a93c5d06e811e712c66320b61a2eee12a13c0dde 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -171,6 +171,10 @@ if (DARWIN)
 ## Really?? On developer machines too?
 ##set(ENABLE_SIGNING TRUE)
 ##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")
+
+  # required for clang-15/xcode-15 since our boost package still uses deprecated std::unary_function/binary_function
+  # see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#C++-Standard-Library
+  add_compile_definitions(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION)
 endif (DARWIN)
 
 if (LINUX OR DARWIN)
diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp
index 117d408b21eccec57af2396844317653ef5712ba..5b1b28bf4f3ce15729ddef5aa8728c8bd405531b 100644
--- a/indra/llcharacter/llbvhloader.cpp
+++ b/indra/llcharacter/llbvhloader.cpp
@@ -1352,7 +1352,6 @@ BOOL LLBVHLoader::serialize(LLDataPacker& dp)
 		dp.packS32(joint->mNumRotKeys, "num_rot_keys");
 
 		LLQuaternion::Order order = bvhStringToOrder( joint->mOrder );
-		S32 outcount = 0;
 		S32 frame = 0;
 		for (Key& key : joint->mKeys)
 		{
@@ -1418,7 +1417,6 @@ BOOL LLBVHLoader::serialize(LLDataPacker& dp)
 			dp.packU16(x, "rot_angle_x");
 			dp.packU16(y, "rot_angle_y");
 			dp.packU16(z, "rot_angle_z");
-			outcount++;
 			frame++;
 		}
 		
diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp
index b7e316da1002db395cdc56ba1459a53bc072bdc9..9181600f23c5766dfe3fbb3d6133440a35769992 100644
--- a/indra/llcommon/llsdserialize.cpp
+++ b/indra/llcommon/llsdserialize.cpp
@@ -2193,9 +2193,9 @@ LLUZipHelper::EZipRresult LLUZipHelper::unzip_llsd(LLSD& data, std::istream& is,
 LLUZipHelper::EZipRresult LLUZipHelper::unzip_llsd(LLSD& data, const U8* in, S32 size)
 {
 	U8* result = NULL;
-	U32 cur_size = 0;
+	llssize cur_size = 0;
 	z_stream strm;
-		
+
 	constexpr U32 CHUNK = 1024 * 512;
 
 	static thread_local std::unique_ptr<U8[]> out;
@@ -2388,7 +2388,7 @@ U8* unzip_llsdNavMesh( bool& valid, size_t& outsize, std::istream& is, S32 size
 	return result;
 }
 
-char* strip_deprecated_header(char* in, U32& cur_size, U32* header_size)
+char* strip_deprecated_header(char* in, llssize& cur_size, size_t* header_size)
 {
 	const char* deprecated_header = "<? LLSD/Binary ?>";
 	constexpr size_t deprecated_header_size = 17;
diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h
index 2f12c6d1ff60909a7fbf03bfc81e8e4d7dbd7748..0957ba9714aa7c80819ff293bc6c77e1b733fe02 100644
--- a/indra/llcommon/llsdserialize.h
+++ b/indra/llcommon/llsdserialize.h
@@ -873,5 +873,5 @@ LL_COMMON_API std::string zip_llsd(LLSD& data);
 LL_COMMON_API U8* unzip_llsdNavMesh( bool& valid, size_t& outsize,std::istream& is, S32 size);
 
 // returns a pointer to the array or past the array if the deprecated header exists
-LL_COMMON_API char* strip_deprecated_header(char* in, U32& cur_size, U32* header_size = nullptr);
+LL_COMMON_API char* strip_deprecated_header(char* in, llssize& cur_size, size_t* header_size = nullptr);
 #endif // LL_LLSDSERIALIZE_H
diff --git a/indra/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h
index da8512169c689826cdd8ded90f97b2b34cea82f9..0b43d7ad4b4c272da5026cefa8c4773509863dfa 100644
--- a/indra/llcommon/stdtypes.h
+++ b/indra/llcommon/stdtypes.h
@@ -41,7 +41,7 @@ typedef unsigned int			U32;
 
 // to express an index that might go negative
 // (ssize_t is provided by SOME compilers, don't collide)
-typedef typename std::make_signed<size_t>::type llssize;
+typedef typename std::make_signed<std::size_t>::type llssize;
 
 #if LL_WINDOWS
 // https://docs.microsoft.com/en-us/cpp/build/reference/zc-wchar-t-wchar-t-is-native-type
diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp
index 7ee36a9ea6ace696a16c22c078cb6574c1174b60..60005fc6a9570c92d50970ed3eb23e1cee3d6e5b 100644
--- a/indra/llcommon/tests/llleap_test.cpp
+++ b/indra/llcommon/tests/llleap_test.cpp
@@ -109,7 +109,7 @@ namespace tut
                    "import os\n"
                    "import sys\n"
                    "\n"
-                   "from llbase import llsd\n"
+                   "import llsd\n"
                    "\n"
                    "class ProtocolError(Exception):\n"
                    "    def __init__(self, msg, data):\n"
diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp
index 5dbcf4c9b864aa5290ffb6508808026611236cb1..d7c11c5021a857a6379de75b8cb1ec7c163f6d96 100644
--- a/indra/llcommon/tests/llsdserialize_test.cpp
+++ b/indra/llcommon/tests/llsdserialize_test.cpp
@@ -1706,7 +1706,7 @@ namespace tut
             // scanner.
             import_llsd("import os.path\n"
                         "import sys\n"
-                        "from llbase import llsd\n")
+                        "import llsd\n")
         {}
         ~TestPythonCompatible() {}
 
diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py
index 185e8e25c671c1d35cd65b9a1b609251c78f66b1..b9992538bae13724ba36a245f6700aaf3359522d 100755
--- a/indra/llcorehttp/tests/test_llcorehttp_peer.py
+++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py
@@ -38,7 +38,7 @@
 from http.server import HTTPServer, BaseHTTPRequestHandler
 
 
-from llbase import llsd
+import llsd
 
 # we're in llcorehttp/tests ; testrunner.py is found in llmessage/tests
 sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir,
diff --git a/indra/llmessage/llcircuit.cpp b/indra/llmessage/llcircuit.cpp
index 8baa2e328b99d3157be5e25c185a72ceaf2086d7..a9a292958f66ccb35141f6ba07b2ff2fe08f5f2e 100644
--- a/indra/llmessage/llcircuit.cpp
+++ b/indra/llmessage/llcircuit.cpp
@@ -271,7 +271,6 @@ void LLCircuitData::ackReliablePacket(TPACKETID packet_num)
 
 S32 LLCircuitData::resendUnackedPackets(const F64Seconds now)
 {
-	S32 resent_packets = 0;
 	LLReliablePacket *packetp;
 
 
@@ -375,7 +374,6 @@ S32 LLCircuitData::resendUnackedPackets(const F64Seconds now)
 				// Don't remove it yet, it still gets to try to resend at least once.
 				++iter;
 			}
-			resent_packets++;
 		}
 		else
 		{
diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py
index 5ba0749e3168fd9e92dab5d9162a7c0ca95f0cff..8e9b6c09e730f7e2051409489a860d57e4fc206f 100755
--- a/indra/llmessage/tests/test_llsdmessage_peer.py
+++ b/indra/llmessage/tests/test_llsdmessage_peer.py
@@ -33,8 +33,8 @@
 import sys
 from http.server import HTTPServer, BaseHTTPRequestHandler
 
-from llbase.fastest_elementtree import parse as xml_parse
-from llbase import llsd
+from llsd.fastest_elementtree import parse as xml_parse
+import llsd
 from testrunner import freeport, run, debug, VERBOSE
 import time
 
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index ae408dae4f20ff6c944aa8f31d7510f03dd23506..4c7c8e6f5c91cff3563983267e58dc89c76db1ca 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -2890,9 +2890,7 @@ void LLGLSyncFence::wait()
 	if (mSync)
 	{
 		while (glClientWaitSync(mSync, 0, FENCE_WAIT_TIME_NANOSECONDS) == GL_TIMEOUT_EXPIRED)
-		{ //track the number of times we've waited here
-			static S32 waits = 0;
-			waits++;
+		{
 		}
 	}
 }
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 8028f397f3ebf99bc2c52d25888ab68c8d350bbf..3354cb2db3ae5c39f313d6a3c00873ab1ba4f83b 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -942,11 +942,8 @@ void LLButton::draw()
 			break;
 		}
 
-		S32 y_offset = 2 + (getRect().getHeight() - 20)/2;
-	
 		if (pressed && mDisplayPressedState)
 		{
-			y_offset--;
 			x++;
 		}
 
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 33c4b6ec737cb6312378ba33e54ce7ebfae8f844..16c27da56a0774f8142ca926260488aaae5e4dca 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -487,9 +487,6 @@ void LLMenuItemGL::draw( void )
 	// let disabled items be highlighted, just don't draw them as such
 	if( getEnabled() && getHighlight() && !mBriefItem)
 	{
-		int debug_count = 0;
-		if (dynamic_cast<LLMenuItemCallGL*>(this))
-			debug_count++;
 		gGL.color4fv( mHighlightBackground.get().mV );
 
 		gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0 );
diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp
index ead8634df4d1383c620b7acc5a80c496d97cb2a2..2960ecf8292d727a7c2e7aac27540774621f4460 100644
--- a/indra/llxml/llcontrol.cpp
+++ b/indra/llxml/llcontrol.cpp
@@ -774,7 +774,6 @@ U32 LLControlGroup::loadFromFileLegacy(const std::string& filename, BOOL require
 		return 0;
 	}
 
-	U32		item = 0;
 	U32		validitems = 0;
 	S32 version;
 	
@@ -808,8 +807,6 @@ U32 LLControlGroup::loadFromFileLegacy(const std::string& filename, BOOL require
 		}
 
 		// Got an item.  Load it up.
-		item++;
-
 		// If not declared, assume it's a string
 		if (!declared)
 		{
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 4c3891f302766bc1a9c38e2bb6feaf27c1f1fcbe..ea176dd8de8a0c16c7ab67a6719e083c6e88b924 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -3704,7 +3704,6 @@ void LLAgent::processScriptControlChange(LLMessageSystem *msg, void **)
 			// take controls
 			msg->getU32("Data", "Controls", controls, block_index );
 			msg->getBOOL("Data", "PassToAgent", passon, block_index );
-			U32 total_count = 0;
 			for (i = 0; i < TOTAL_CONTROLS; i++)
 			{
 				if (controls & ( 1 << i))
@@ -3717,7 +3716,6 @@ void LLAgent::processScriptControlChange(LLMessageSystem *msg, void **)
 					{
 						gAgent.mControlsTakenCount[i]++;
 					}
-					total_count++;
 				}
 			}
 		}
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 9ccb42cdc56e154cd25c8e00705cc5c28ec41901..adeb7ed063b95418b49988314d39990437a52f25 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -1862,10 +1862,10 @@ EMeshProcessingResult LLMeshRepoThread::headerReceived(const LLVolumeParams& mes
 	
     LLMeshHeader header;
 
-	U32 header_size = 0;
+	size_t header_size = 0;
 	if (data_size > 0)
 	{
-		U32 dsize = data_size;
+		llssize dsize = data_size;
 		char* result_ptr = strip_deprecated_header((char*)data, dsize, &header_size);
 
 		data_size = dsize;
diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp
index 6ceffd452e820752a6cee92200ca230e57214c87..ccae1030f11f8715705a6f79509a6b7d10c09db2 100644
--- a/indra/newview/llmodelpreview.cpp
+++ b/indra/newview/llmodelpreview.cpp
@@ -2717,9 +2717,6 @@ void LLModelPreview::clearBuffers()
 
 void LLModelPreview::genBuffers(S32 lod, bool include_skin_weights)
 {
-    U32 mesh_count = 0;
-
-
     LLModelLoader::model_list* model = NULL;
 
     if (lod < 0 || lod > 4)
@@ -2887,8 +2884,6 @@ void LLModelPreview::genBuffers(S32 lod, bool include_skin_weights)
             vb->unmapBuffer();
 
             mVertexBuffer[lod][mdl].push_back(vb);
-
-            ++mesh_count;
         }
     }
 }
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 02911313ed41784d3fd020f08a552c560498ea23..3c3cd5d5223b280f3c760c6f2888c9ff4a5bd03f 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -619,7 +619,6 @@ void LLPanelNearByMedia::refreshList()
 	LLViewerMedia::impl_list impls = media_inst->getPriorityList();
 	LLViewerMedia::impl_list::iterator priority_iter;
 	
-	U32 enabled_count = 0;
 	U32 disabled_count = 0;
 	
 	// iterate over the impl list, creating rows as necessary.
@@ -662,13 +661,10 @@ void LLPanelNearByMedia::refreshList()
 			{
 				disabled_count++;
 			}
-			else {
-				enabled_count++;
 		}
 	}
-	}	
 	mDisableAllCtrl->setEnabled((gSavedSettings.getBOOL("AudioStreamingMusic") || 
-		                         gSavedSettings.getBOOL("AudioStreamingMedia")) &&
+								 gSavedSettings.getBOOL("AudioStreamingMedia")) &&
 								(media_inst->isAnyMediaShowing() || 
 								 media_inst->isParcelMediaPlaying() ||
 								 media_inst->isParcelAudioPlaying()));
diff --git a/indra/newview/llsceneview.cpp b/indra/newview/llsceneview.cpp
index 5e339a52bf1da57f3c522456fa88c1747c573bc5..9b1d2d48c65cdbe7f7bb1316f88ce1d1cc86129b 100644
--- a/indra/newview/llsceneview.cpp
+++ b/indra/newview/llsceneview.cpp
@@ -100,8 +100,6 @@ void LLSceneView::draw()
 	F32 total_physics[] = { 0.f, 0.f };
 	
 
-	U32 object_count = 0;
-
 	LLViewerRegion* region = gAgent.getRegion();
 	if (region)
 	{
@@ -116,8 +114,7 @@ void LLSceneView::draw()
 				U32 idx = object->isAttachment() ? 1 : 0;
 
 				LLVolume* volume = object->getVolume();
-				object_count++;
-				
+
 				F32 radius = object->getScale().magVec();
 				size[idx].push_back(radius);
 
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 3b20ed1e00ed0431256acdba968dec86af622c6b..5c1a339570004177ae43bbde6920a1a54e3c6d55 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -5448,8 +5448,8 @@ void LLSelectMgr::sendListToRegions(LLObjectSelectionHandle selected_handle,
 	LLViewerRegion*	last_region;
 	LLViewerRegion*	current_region;
 
-	S32 objects_sent = 0;
-	S32 packets_sent = 0;
+//	S32 objects_sent = 0;
+//	S32 packets_sent = 0;
 	S32 objects_in_this_packet = 0;
 
 	bool link_operation = message_name == "ObjectLink";
@@ -5581,7 +5581,7 @@ void LLSelectMgr::sendListToRegions(LLObjectSelectionHandle selected_handle,
 			(*pack_body)(node, user_data);
             // do any related logging
             (*log_func)(node, user_data);
-			++objects_sent;
+//			++objects_sent;
 			++objects_in_this_packet;
 
 			// and on to the next object
@@ -5599,7 +5599,7 @@ void LLSelectMgr::sendListToRegions(LLObjectSelectionHandle selected_handle,
 		{
 			// otherwise send current message and start new one
 			gMessageSystem->sendReliable( last_region->getHost());
-			packets_sent++;
+//			packets_sent++;
 			objects_in_this_packet = 0;
 
 			gMessageSystem->newMessage(message_name.c_str());
@@ -5616,7 +5616,7 @@ void LLSelectMgr::sendListToRegions(LLObjectSelectionHandle selected_handle,
 				{
 					// add root instance into new message
 					(*pack_body)(linkset_root, user_data);
-					++objects_sent;
+//					++objects_sent;
 					++objects_in_this_packet;
 				}
 			}
@@ -5630,7 +5630,7 @@ void LLSelectMgr::sendListToRegions(LLObjectSelectionHandle selected_handle,
 	if (gMessageSystem->getCurrentSendTotal() > 0)
 	{
 		gMessageSystem->sendReliable( current_region->getHost());
-		packets_sent++;
+//		packets_sent++;
 	}
 	else
 	{
diff --git a/indra/newview/llsprite.cpp b/indra/newview/llsprite.cpp
index b641afc1ef7dc77d99eb84adb0349c521dd74afb..af0b5a40b4992965397f836da7a7ddf397bf6243 100644
--- a/indra/newview/llsprite.cpp
+++ b/indra/newview/llsprite.cpp
@@ -79,7 +79,6 @@ void LLSprite::updateFace(LLFace &face)
 
 	// First, figure out how many vertices/indices we need.
 	U32 num_vertices, num_indices;
-	U32 vertex_count = 0;
 	
 	// Get the total number of vertices and indices
 	if (mFollow)
@@ -202,25 +201,21 @@ void LLSprite::updateFace(LLFace &face)
 	*verticesp = mC;
 	tex_coordsp++;
 	verticesp++;
-	vertex_count++;
 
 	*tex_coordsp = LLVector2(0.f, 1.f);
 	*verticesp = mB;
 	tex_coordsp++;
 	verticesp++;
-	vertex_count++;
 
 	*tex_coordsp = LLVector2(1.f, 1.f);
 	*verticesp = mA;
 	tex_coordsp++;
 	verticesp++;
-	vertex_count++;
 
 	*tex_coordsp = LLVector2(1.f, 0.0f);
 	*verticesp = mD;
 	tex_coordsp++;
 	verticesp++;
-	vertex_count++;
 
 	// Generate indices, since they're easy.
 	// Just a series of quads.
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 73234552e5eced2cfa3c847444f41e8e68c04798..e84894b395f44d80fd474a1d29e9830d7913c8a5 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -3259,7 +3259,7 @@ LLSD transform_cert_args(LLPointer<LLCertificate> cert)
 		// are actually arrays, and we want to format them as comma separated          
 		// strings, so special case those.                                             
 		LLSDSerialize::toXML(cert_info[iter->first], std::cout);
-		if((iter->first== std::string(CERT_KEY_USAGE)) |
+		if((iter->first == std::string(CERT_KEY_USAGE)) ||
 		   (iter->first == std::string(CERT_EXTENDED_KEY_USAGE)))
 		{
 			value = "";
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index ca93eb648bf4541a096f8cb31d382228adf2460e..62703e3499a8584ffcdfdb34b50b235d11ed2abe 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -821,8 +821,8 @@ void LLTextureView::draw()
 
 			if (imagep->getID() == LLAppViewer::getTextureFetch()->mDebugID)
 			{
-				static S32 debug_count = 0;
-				++debug_count; // for breakpoints
+//				static S32 debug_count = 0;
+//				++debug_count; // for breakpoints
 			}
 			
 			F32 pri;
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index ce4f9b7e645bffbbfb5fe2b53402f47a2e4927d9..f8591955a4c8342b1b7d510e0e363638cb212a20 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -773,7 +773,6 @@ void LLViewerObjectList::dirtyAllObjectInventory()
 void LLViewerObjectList::updateApparentAngles(LLAgent &agent)
 {
 	S32 i;
-	S32 num_objects = 0;
 	LLViewerObject *objectp;
 
 	S32 num_updates, max_value;
@@ -795,8 +794,6 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent)
 		objectp = mObjects[i];
 		if (!objectp->isDead())
 		{
-			num_objects++;
-
 			//  Update distance & gpw 
 			objectp->setPixelAreaAndAngle(agent); // Also sets the approx. pixel area
 			objectp->updateTextures();	// Update the image levels of textures for this object.
diff --git a/indra/newview/llviewerthrottle.cpp b/indra/newview/llviewerthrottle.cpp
index 2729253d183a0cff83dbe8abe2d3cc8dcd0724bc..20390a316ae0f4c5f3d558fdb963169a9f225ac6 100644
--- a/indra/newview/llviewerthrottle.cpp
+++ b/indra/newview/llviewerthrottle.cpp
@@ -84,7 +84,7 @@ LLViewerThrottleGroup::LLViewerThrottleGroup()
 }
 
 
-LLViewerThrottleGroup::LLViewerThrottleGroup(const F32 settings[])
+LLViewerThrottleGroup::LLViewerThrottleGroup(const F32 settings[TC_EOF])
 {
 	mThrottleTotal = 0.f;
 	S32 i;
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 3f5f56d378036b80fac1b3ca5488d00ec02f438b..15fabf0414fa7ca2b0dc832b6eb16a3ae9086f70 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -388,7 +388,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 										LLStrider<U16> &indicesp,
 										U32 &index_offset)
 {
-	S32 vertex_count = 0;
 	S32 i, x, y;
 
 	S32 num_vertices;
@@ -423,7 +422,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			normalsp++;
 			texCoords0p++;
 			texCoords1p++;
-			vertex_count++;
 		}
 
 		// North patch
@@ -436,7 +434,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			normalsp++;
 			texCoords0p++;
 			texCoords1p++;
-			vertex_count++;
 		}
 
 
@@ -473,7 +470,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			normalsp++;
 			texCoords0p++;
 			texCoords1p++;
-			vertex_count++;
 		}
 
 		// Iterate through the north patch's points
@@ -487,7 +483,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			normalsp++;
 			texCoords0p++;
 			texCoords1p++;
-			vertex_count++;
 		}
 
 
@@ -531,7 +526,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			normalsp++;
 			texCoords0p++;
 			texCoords1p++;
-			vertex_count++;
 		}
 
 		// Iterate through the north patch's points
@@ -545,7 +539,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			normalsp++;
 			texCoords0p++;
 			texCoords1p++;
-			vertex_count++;
 		}
 
 		for (i = 0; i < length; i++)
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index c55254237ab25496ad55a3f53486354a9c3c2b2c..b521dcba5a7ba2cc323f360cc0cc7d0a1f6610a9 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -6196,7 +6196,6 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
 	LLSpatialGroup::buffer_map_t buffer_map;
 
 	LLViewerTexture* last_tex = NULL;
-	S32 buffer_index = 0;
 
 	S32 texture_index_channels = 1;
 	
@@ -6208,8 +6207,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
 	if (distance_sort)
 	{
 		texture_index_channels = gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels;
-        buffer_index = -1;
-    }
+	}
 
 	texture_index_channels = LLGLSLShader::sIndexedTextureChannels;
 
@@ -6229,14 +6227,9 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace
 			tex = NULL;
 		}
 
-		if (last_tex == tex)
-		{
-			buffer_index++;
-		}
-		else
+		if (last_tex != tex)
 		{
 			last_tex = tex;
-			buffer_index = 0;
 		}
 
 		bool bake_sunlight = LLPipeline::sBakeSunlight && facep->getDrawable()->isStatic(); 
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index c312c1d248a1c4f9bee72b7b6e2ed7e81d826f32..3a7c7d7f46ac96ba93a77401d047cde6d7ea20ea 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -49,7 +49,7 @@
 # indra.util.llmanifest under their system Python!
 sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "python"))
 from indra.util.llmanifest import LLManifest, main, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError, MissingError
-from llbase import llsd
+import llsd
 
 class ViewerManifest(LLManifest):
     def is_packaging_viewer(self):
diff --git a/scripts/metrics/slp_conv.py b/scripts/metrics/slp_conv.py
index 27f922b74ac3dd66e8015fbef72f80e81851f905..25f9a8c060f45db007feddf9611684476027ea98 100644
--- a/scripts/metrics/slp_conv.py
+++ b/scripts/metrics/slp_conv.py
@@ -29,7 +29,7 @@
 $/LicenseInfo$
 """
 
-from llbase import llsd
+import llsd
 import argparse
 
 parser = argparse.ArgumentParser(
diff --git a/scripts/metrics/viewer_asset_logs.py b/scripts/metrics/viewer_asset_logs.py
index 036593618851b3cd94a4c29755b1465f14c887b1..bd996dff79e648f32b3cec9fb038bc2adad7c480 100644
--- a/scripts/metrics/viewer_asset_logs.py
+++ b/scripts/metrics/viewer_asset_logs.py
@@ -28,7 +28,7 @@
 
 import argparse
 from lxml import etree
-from llbase import llsd
+import llsd
 
 def get_metrics_record(infiles):
     for filename in args.infiles:
diff --git a/scripts/metrics/viewerstats.py b/scripts/metrics/viewerstats.py
index 7e19539e158d160c54c1e957350824c54d74bd96..e64343329cc2ea3e3695893c8d21c9f3d6180090 100755
--- a/scripts/metrics/viewerstats.py
+++ b/scripts/metrics/viewerstats.py
@@ -31,7 +31,7 @@
 import pandas as pd
 import json
 from collections import Counter, defaultdict
-from llbase import llsd
+import llsd
 import io
 import re
 import os