diff --git a/src/backend/cdb/cdbpersistentdatabase.c b/src/backend/cdb/cdbpersistentdatabase.c
index a78ca21..f5d8451 100644
--- a/src/backend/cdb/cdbpersistentdatabase.c
+++ b/src/backend/cdb/cdbpersistentdatabase.c
@@ -612,7 +612,7 @@
 	 */
 #ifdef MASTER_MIRROR_SYNC
 	mmxlog_log_create_database(dbDirNode->tablespace, dbDirNode->database,
-			persistentTid, persistentSerialNum);
+			persistentTid, *persistentSerialNum);
 #endif
 
 
@@ -1291,7 +1291,7 @@
 #ifdef MASTER_MIRROR_SYNC
 	mmxlog_log_create_database(dbDirNode->tablespace,
 							   dbDirNode->database,
-							   persistentTid, persistentSerialNum);
+							   persistentTid, *persistentSerialNum);
 #endif
 	
 	WRITE_PERSISTENT_STATE_ORDERED_UNLOCK;
diff --git a/src/backend/cdb/cdbpersistentfilespace.c b/src/backend/cdb/cdbpersistentfilespace.c
index 58418ef..2d009cf 100644
--- a/src/backend/cdb/cdbpersistentfilespace.c
+++ b/src/backend/cdb/cdbpersistentfilespace.c
@@ -612,7 +612,7 @@
 	 * This XLOG must be generated under the persistent write-lock.
 	 */
 #ifdef MASTER_MIRROR_SYNC
-	mmxlog_log_create_filespace(filespaceOid,persistentTid, persistentSerialNum);
+	mmxlog_log_create_filespace(filespaceOid,persistentTid, *persistentSerialNum);
 #endif
 
 
diff --git a/src/backend/cdb/cdbpersistentrelfile.c b/src/backend/cdb/cdbpersistentrelfile.c
index fa4e023..c6214dd 100644
--- a/src/backend/cdb/cdbpersistentrelfile.c
+++ b/src/backend/cdb/cdbpersistentrelfile.c
@@ -246,7 +246,7 @@
 						relFileNode->dbNode,
 						relFileNode->relNode,
 						segmentFileNum,
-						persistentTid, serialNum);
+						persistentTid, *serialNum);
 #endif
 
 	#ifdef FAULT_INJECTOR
diff --git a/src/backend/cdb/cdbpersistenttablespace.c b/src/backend/cdb/cdbpersistenttablespace.c
index e7ddc33..73991c6 100644
--- a/src/backend/cdb/cdbpersistenttablespace.c
+++ b/src/backend/cdb/cdbpersistenttablespace.c
@@ -712,7 +712,7 @@
 	mmxlog_log_create_tablespace(
 						filespaceOid,
 						tablespaceOid,
-						persistentTid, persistentSerialNum);
+						persistentTid, *persistentSerialNum);
 #endif
 
 	#ifdef FAULT_INJECTOR
diff --git a/src/backend/resourcemanager/resourcemanager.c b/src/backend/resourcemanager/resourcemanager.c
index 96cf9ff..7303382 100644
--- a/src/backend/resourcemanager/resourcemanager.c
+++ b/src/backend/resourcemanager/resourcemanager.c
@@ -1032,7 +1032,7 @@
 
 	setSimpleStringRefNoLen(&segmem, rm_seg_memory_use);
 	int res = SimpleStringToStorageSizeMB(&segmem,
-										  &(DRMGlobalInstance->SegmentMemoryMB));
+										  (uint32_t *) &(DRMGlobalInstance->SegmentMemoryMB));
 	if ( res != FUNC_RETURN_OK)
 	{
 		elog(WARNING, "Can not understand the value '%s' of property %s.",
diff --git a/src/backend/resourcemanager/resqueuemanager.c b/src/backend/resourcemanager/resqueuemanager.c
index d98c11c..b288ba2 100644
--- a/src/backend/resourcemanager/resqueuemanager.c
+++ b/src/backend/resourcemanager/resqueuemanager.c
@@ -486,7 +486,7 @@
 			{
 				memlimit_value = true;
 				res = SimpleStringToStorageSizeMB(attrvalue,
-												  &(queue->ClusterMemoryMB));
+												  (uint32_t *) &(queue->ClusterMemoryMB));
 			}
 			break;
 
@@ -517,7 +517,7 @@
 								   attrvalue->Len-sizeof(RESOURCE_QUEUE_SEG_RES_QUOTA_MEM)+1);
 
 				res = SimpleStringToStorageSizeMB(&valuestr,
-												  &(queue->SegResourceQuotaMemoryMB));
+												  (uint32_t *) &(queue->SegResourceQuotaMemoryMB));
 
 				/*
 				 *--------------------------------------------------------------
@@ -846,7 +846,7 @@
 
 				res = SimpleStringToStorageSizeMB(
 						&valuestr,
-						&(shadowqueinfo->SegResourceQuotaMemoryMB));
+						(uint32_t *) &(shadowqueinfo->SegResourceQuotaMemoryMB));
 				if ( res == FUNC_RETURN_OK )
 				{
 					shadowqueinfo->SegResourceQuotaVCore = -1;
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 072b3f6..5b4461d 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -3202,7 +3202,7 @@
 						break;
 
 					case RESERV:
-						tmask = (DTK_DATE_M || DTK_TIME_M);
+						tmask = (DTK_DATE_M | DTK_TIME_M);
 						*dtype = val;
 						break;
 
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 76c4e24..f13cf88 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -461,7 +461,7 @@
 			/* A zeroed client addr means we don't know */
 			memset(&zero_clientaddr, 0, sizeof(zero_clientaddr));
 			if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr,
-					   sizeof(zero_clientaddr) == 0))
+					   (size_t) (sizeof(zero_clientaddr) == 0)))
 			{
 				nulls[9] = true;
 				nulls[10] = true;
@@ -719,7 +719,7 @@
 	/* A zeroed client addr means we don't know */
 	memset(&zero_clientaddr, 0, sizeof(zero_clientaddr));
 	if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr,
-			   sizeof(zero_clientaddr) == 0))
+			   (size_t) (sizeof(zero_clientaddr) == 0)))
 		PG_RETURN_NULL();
 
 	switch (beentry->st_clientaddr.addr.ss_family)
@@ -765,7 +765,7 @@
 	/* A zeroed client addr means we don't know */
 	memset(&zero_clientaddr, 0, sizeof(zero_clientaddr));
 	if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr,
-			   sizeof(zero_clientaddr) == 0))
+			   (size_t) (sizeof(zero_clientaddr) == 0)))
 		PG_RETURN_NULL();
 
 	switch (beentry->st_clientaddr.addr.ss_family)
diff --git a/src/backend/utils/gp/segadmin.c b/src/backend/utils/gp/segadmin.c
index 775cadb..ea815a9 100644
--- a/src/backend/utils/gp/segadmin.c
+++ b/src/backend/utils/gp/segadmin.c
@@ -109,7 +109,7 @@
 		/* TODO: Add new check */
 	}
 
-	if ((flags && STANDBY_ONLY) == STANDBY_ONLY)
+	if ((flags & STANDBY_ONLY) == STANDBY_ONLY)
 	{
 		/* TODO: Add new check */
 	}
diff --git a/src/backend/utils/misc/faultinjector.c b/src/backend/utils/misc/faultinjector.c
index b1dea54..5c47c35 100644
--- a/src/backend/utils/misc/faultinjector.c
+++ b/src/backend/utils/misc/faultinjector.c
@@ -785,7 +785,7 @@
 
 		case FaultInjectorTypeSegv:
 		{
-			*(int *) 0 = 1234;
+			*(volatile int *) 0 = 1234;
 			break;
 		}
 		
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 03b6d88..dae1543 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -13683,7 +13683,7 @@
 {
 	if (doit)
 	{
-		int32_t newvalmb = 0;
+		uint32_t newvalmb = 0;
 		int parseres = FUNC_RETURN_OK;
 		SimpString valuestr;
 		setSimpleStringRef(&valuestr, newval, strlen(newval));
diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index 445e3ca..607d3c9 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -459,7 +459,7 @@
 		 *
 		 * XXX What is the right way of doing this?
 		 */
-		*(int *) NULL = errorcode;
+		((void(*)()) NULL)();
 	}
 
 	if(errorcode != ERRCODE_OUT_OF_MEMORY)
diff --git a/src/backend/utils/mmgr/memprot.c b/src/backend/utils/mmgr/memprot.c
index c61e8b2..868bb72 100644
--- a/src/backend/utils/mmgr/memprot.c
+++ b/src/backend/utils/mmgr/memprot.c
@@ -299,7 +299,7 @@
 		/*
 		 * Generate a core dump by writing to NULL pointer
 		 */
-		*(int *) NULL = ec;
+		*(volatile int *) NULL = ec;
 	}
 
 	if (ec == MemoryFailure_VmemExhausted)
diff --git a/src/include/access/fileam.h b/src/include/access/fileam.h
index 5a5f532..1e926d5 100644
--- a/src/include/access/fileam.h
+++ b/src/include/access/fileam.h
@@ -72,8 +72,6 @@
 	ProjectionInfo *projInfo;
 } ExternalSelectDescData;
 
-typedef ExternalSelectDescData *ExternalSelectDesc;
-
 typedef enum DataLineStatus
 {
 	LINE_OK,
diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c
index af2a077..471051d 100644
--- a/src/interfaces/ecpg/pgtypeslib/interval.c
+++ b/src/interfaces/ecpg/pgtypeslib/interval.c
@@ -606,7 +606,7 @@
 						break;
 
 					case RESERV:
-						tmask = (DTK_DATE_M || DTK_TIME_M);
+						tmask = (DTK_DATE_M | DTK_TIME_M);
 						*dtype = val;
 						break;
 
