Index: NetworkPkg/Dhcp6Dxe/Dhcp6Io.c
===================================================================
--- NetworkPkg/Dhcp6Dxe/Dhcp6Io.c	(revision 16423)
+++ NetworkPkg/Dhcp6Dxe/Dhcp6Io.c	(working copy)
@@ -544,7 +544,6 @@
   )
 {
   EFI_STATUS                  Status;
-  EFI_DHCP6_STATE             State;
   UINT8                       *Option;
   UINT8                       *IaInnerOpt;
   UINT16                      IaInnerLen;
@@ -565,7 +564,6 @@
   //
   // See details in the section-18.1.8 of rfc-3315.
   //
-  State  = Dhcp6Init;
   Option = Dhcp6SeekIaOption (
              Packet->Dhcp6.Option,
              Packet->Length - sizeof (EFI_DHCP6_HEADER),
@@ -2428,7 +2426,6 @@
 {
   EFI_STATUS                  Status;
   UINT8                       *Option;
-  UINT16                      StsCode;
   BOOLEAN                     Timeout;
 
   ASSERT(Instance->Config);
@@ -2435,7 +2432,6 @@
   ASSERT(Instance->IaCb.Ia);
 
   Timeout = FALSE;
-  StsCode = Dhcp6StsSuccess;
 
   //
   // If the client does receives a valid reply message that includes a rapid
Index: NetworkPkg/Ip6Dxe/Ip6Impl.c
===================================================================
--- NetworkPkg/Ip6Dxe/Ip6Impl.c	(revision 16423)
+++ NetworkPkg/Ip6Dxe/Ip6Impl.c	(working copy)
@@ -1761,7 +1761,6 @@
   )
 {
   IP6_PROTOCOL              *IpInstance;
-  IP6_SERVICE               *IpSb;
   EFI_STATUS                Status;
   EFI_TPL                   OldTpl;
 
@@ -1770,7 +1769,6 @@
   }
 
   IpInstance = IP6_INSTANCE_FROM_PROTOCOL (This);
-  IpSb       = IpInstance->Service;
 
   OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
 
Index: NetworkPkg/NetworkPkg.dsc
===================================================================
--- NetworkPkg/NetworkPkg.dsc	(revision 16423)
+++ NetworkPkg/NetworkPkg.dsc	(working copy)
@@ -57,6 +57,14 @@
   SortLib|ShellPkg/Library/UefiSortLib/UefiSortLib.inf
   ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
 
+[LibraryClasses.ARM]
+  #
+  # It is not possible to prevent ARM compiler calls to generic intrinsic functions.
+  # This library provides the instrinsic functions generated by a given compiler.
+  # [LibraryClasses.ARM] and NULL mean link this library into all ARM images.
+  #
+  NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
+
 [PcdsFeatureFlag]
   gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|TRUE
   gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable|TRUE
Index: NetworkPkg/TcpDxe/TcpDispatcher.c
===================================================================
--- NetworkPkg/TcpDxe/TcpDispatcher.c	(revision 16423)
+++ NetworkPkg/TcpDxe/TcpDispatcher.c	(working copy)
@@ -100,7 +100,7 @@
 
     CopyMem (&AccessPoint->StationAddress, &Tcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS));
 
-    AccessPoint->SubnetMask          = Tcb->SubnetMask;
+    CopyMem (&AccessPoint->SubnetMask, &Tcb->SubnetMask, sizeof (EFI_IPv4_ADDRESS));
     AccessPoint->StationPort         = NTOHS (Tcb->LocalEnd.Port);
 
     CopyMem (&AccessPoint->RemoteAddress, &Tcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS));
@@ -495,7 +495,11 @@
     IpCfgData.Ip4CfgData.TypeOfService      = CfgData->Tcp4CfgData.TypeOfService;
     IpCfgData.Ip4CfgData.TimeToLive         = CfgData->Tcp4CfgData.TimeToLive;
     IpCfgData.Ip4CfgData.UseDefaultAddress  = CfgData->Tcp4CfgData.AccessPoint.UseDefaultAddress;
-    IpCfgData.Ip4CfgData.SubnetMask         = CfgData->Tcp4CfgData.AccessPoint.SubnetMask;
+    CopyMem (
+      &IpCfgData.Ip4CfgData.SubnetMask,
+      &CfgData->Tcp4CfgData.AccessPoint.SubnetMask,
+      sizeof (EFI_IPv4_ADDRESS)
+      );
     IpCfgData.Ip4CfgData.ReceiveTimeout     = (UINT32) (-1);
     CopyMem (
       &IpCfgData.Ip4CfgData.StationAddress,
@@ -533,8 +537,14 @@
     //
     // Get the default address information if the instance is configured to use default address.
     //
-    CfgData->Tcp4CfgData.AccessPoint.StationAddress = IpCfgData.Ip4CfgData.StationAddress;
-    CfgData->Tcp4CfgData.AccessPoint.SubnetMask     = IpCfgData.Ip4CfgData.SubnetMask;
+    IP4_COPY_ADDRESS (
+      &CfgData->Tcp4CfgData.AccessPoint.StationAddress,
+      &IpCfgData.Ip4CfgData.StationAddress
+      );
+    IP4_COPY_ADDRESS (
+      &CfgData->Tcp4CfgData.AccessPoint.SubnetMask,
+      &IpCfgData.Ip4CfgData.SubnetMask
+      );
 
     TcpAp = (TCP_ACCESS_POINT *) &CfgData->Tcp4CfgData.AccessPoint;
   } else {
@@ -601,7 +611,7 @@
 
     CopyMem (&Tcb->LocalEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.StationAddress, sizeof (IP4_ADDR));
     Tcb->LocalEnd.Port  = HTONS (CfgData->Tcp4CfgData.AccessPoint.StationPort);
-    Tcb->SubnetMask     = CfgData->Tcp4CfgData.AccessPoint.SubnetMask;
+    IP4_COPY_ADDRESS (&Tcb->SubnetMask, &CfgData->Tcp4CfgData.AccessPoint.SubnetMask);
 
     CopyMem (&Tcb->RemoteEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.RemoteAddress, sizeof (IP4_ADDR));
     Tcb->RemoteEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.RemotePort);
Index: NetworkPkg/TcpDxe/TcpMain.c
===================================================================
--- NetworkPkg/TcpDxe/TcpMain.c	(revision 16423)
+++ NetworkPkg/TcpDxe/TcpMain.c	(working copy)
@@ -229,9 +229,9 @@
   Sock                      = SOCK_FROM_THIS (This);
 
   RouteInfo.DeleteRoute     = DeleteRoute;
-  RouteInfo.SubnetAddress   = SubnetAddress;
-  RouteInfo.SubnetMask      = SubnetMask;
-  RouteInfo.GatewayAddress  = GatewayAddress;
+  IP4_COPY_ADDRESS (&RouteInfo.SubnetAddress, &SubnetAddress);
+  IP4_COPY_ADDRESS (&RouteInfo.SubnetMask, &SubnetMask);
+  IP4_COPY_ADDRESS (&RouteInfo.GatewayAddress, &GatewayAddress);
 
   return SockRoute (Sock, &RouteInfo);
 }
Index: NetworkPkg/TcpDxe/TcpMisc.c
===================================================================
--- NetworkPkg/TcpDxe/TcpMisc.c	(revision 16423)
+++ NetworkPkg/TcpDxe/TcpMisc.c	(working copy)
@@ -428,7 +428,6 @@
   LIST_ENTRY       *Entry;
   LIST_ENTRY       *Head;
   TCP_CB           *Node;
-  TCP_PROTO_DATA  *TcpProto;
 
   ASSERT (
     (Tcb != NULL) &&
@@ -466,7 +465,6 @@
 
   InsertHeadList (Head, &Tcb->List);
 
-  TcpProto = (TCP_PROTO_DATA *) Tcb->Sk->ProtoReserved;
 
   return 0;
 }
Index: NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
===================================================================
--- NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c	(revision 16423)
+++ NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c	(working copy)
@@ -664,7 +664,6 @@
 {
   EFI_PXE_BASE_CODE_UDP_PORT          SrcPort;
   EFI_PXE_BASE_CODE_UDP_PORT          DestPort;
-  EFI_PXE_BASE_CODE_MODE              *Mode;
   EFI_PXE_BASE_CODE_PROTOCOL          *PxeBc;
   EFI_PXE_BASE_CODE_DHCPV6_PACKET     *Discover;
   UINTN                               DiscoverLen;
@@ -682,7 +681,6 @@
   UINT8                               *Option;
 
   PxeBc       = &Private->PxeBc;
-  Mode        = PxeBc->Mode;
   Request     = Private->Dhcp6Request;
   ProxyOffer = &Private->OfferBuffer[Index].Dhcp6.Packet.Offer;
   SrcPort     = PXEBC_BS_DISCOVER_PORT;
Index: NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c
===================================================================
--- NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c	(revision 16423)
+++ NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c	(working copy)
@@ -1400,7 +1400,6 @@
   EFI_LOAD_FILE_PROTOCOL          *LoadFile;
   EFI_STATUS                      Status;
   EFI_HANDLE                      NicHandle;
-  BOOLEAN                         IsIpv6;
   PXEBC_PRIVATE_PROTOCOL          *Id;
 
   Private    = NULL;
@@ -1408,7 +1407,6 @@
   VirtualNic = NULL;
   LoadFile   = NULL;
   Id         = NULL;
-  IsIpv6     = FALSE;
 
   Status = gBS->OpenProtocol (
                   ControllerHandle,
