misc: Appease clang static analyzer
authorAndreas Hansson <andreas.hansson@arm.com>
Fri, 6 Nov 2015 08:26:16 +0000 (03:26 -0500)
committerAndreas Hansson <andreas.hansson@arm.com>
Fri, 6 Nov 2015 08:26:16 +0000 (03:26 -0500)
A few minor fixes to issues identified by the clang static analyzer.

src/base/loader/dtb_object.cc
src/mem/cache/tags/fa_lru.cc
src/mem/dram_ctrl.cc
src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh
src/mem/ruby/system/RubySystem.cc
src/mem/stack_dist_calc.cc

index 841db8c1263fa9d2ea6f76d8eff8ae49cf018a77..ead667f1112d794157386575eb0b24ee476c8293 100644 (file)
@@ -109,7 +109,10 @@ DtbObject::addBootCmdLine(const char* _args, size_t len)
         // try adding the node by walking dtb tree to proper insertion point
         offset = fdt_path_offset((void*)fdt_buf_w_space, root_path);
         offset = fdt_add_subnode((void*)fdt_buf_w_space, offset, node_name);
-        offset = fdt_path_offset((void*)fdt_buf_w_space, full_path_node_name);
+        // if we successfully add the subnode, get the offset
+        if (offset >= 0)
+          offset = fdt_path_offset((void*)fdt_buf_w_space, full_path_node_name);
+
         if (offset < 0) {
             warn("Error finding or adding \"chosen\" subnode to flattened "
                  "device tree, errno: %d\n", offset);
index 3f717e3a7f24c16e3912f4c8da8b1754edf814e3..c9531d12c25ab798bd643578d46ff53c0fb73e4b 100644 (file)
@@ -67,7 +67,7 @@ FALRU::FALRU(const Params *p)
     numCaches = floorLog2(size) - 17;
     if (numCaches >0){
         cacheBoundaries = new FALRUBlk *[numCaches];
-        cacheMask = (1 << numCaches) - 1;
+        cacheMask = (ULL(1) << numCaches) - 1;
     } else {
         cacheMask = 0;
     }
index dc2c03332a7644a86ef5b9d32d9d1551d657eacf..3ba4616f788af5ccc18d8703127bc99875e84285 100644 (file)
@@ -341,9 +341,8 @@ DRAMCtrl::decodeAddr(PacketPtr pkt, Addr dramPktAddr, unsigned size,
         rank = addr % ranksPerChannel;
         addr = addr / ranksPerChannel;
 
-        // lastly, get the row bits
+        // lastly, get the row bits, no need to remove them from addr
         row = addr % rowsPerBank;
-        addr = addr / rowsPerBank;
     } else if (addrMapping == Enums::RoRaBaCoCh) {
         // take out the lower-order column bits
         addr = addr / columnsPerStripe;
@@ -364,9 +363,8 @@ DRAMCtrl::decodeAddr(PacketPtr pkt, Addr dramPktAddr, unsigned size,
         rank = addr % ranksPerChannel;
         addr = addr / ranksPerChannel;
 
-        // lastly, get the row bits
+        // lastly, get the row bits, no need to remove them from addr
         row = addr % rowsPerBank;
-        addr = addr / rowsPerBank;
     } else if (addrMapping == Enums::RoCoRaBaCh) {
         // optimise for closed page mode and utilise maximum
         // parallelism of the DRAM (at the cost of power)
@@ -391,9 +389,8 @@ DRAMCtrl::decodeAddr(PacketPtr pkt, Addr dramPktAddr, unsigned size,
         // next, the higher-order column bites
         addr = addr / (columnsPerRowBuffer / columnsPerStripe);
 
-        // lastly, get the row bits
+        // lastly, get the row bits, no need to remove them from addr
         row = addr % rowsPerBank;
-        addr = addr / rowsPerBank;
     } else
         panic("Unknown address mapping policy chosen!");
 
index d2ddcb82074ae5f92937d784f325c235ee066569..6432114c1dfab046b35862061a8a682e85779bf4 100644 (file)
@@ -70,7 +70,7 @@ class NetworkInterface_d : public ClockedObject, public Consumer
 
   private:
     GarnetNetwork_d *m_net_ptr;
-    const NodeID m_id;
+    const NodeID M5_CLASS_VAR_USED m_id;
     const int m_virtual_networks, m_vc_per_vnet, m_num_vcs;
     std::vector<OutVcState_d *> m_out_vc_state;
     std::vector<int> m_vc_allocator;
index 3ad3911cb5e63f565116a45e176104863f399f91..1ecd2e098977d39bbe7aeacd98e8ddc90758711b 100644 (file)
@@ -370,7 +370,7 @@ RubySystem::startup()
         }
 
         // Restore eventq head
-        eventq_head = eventq->replaceHead(eventq_head);
+        eventq->replaceHead(eventq_head);
         // Restore curTick and Ruby System's clock
         setCurTick(curtick_original);
         resetClock();
index 3dca873841ac0c0ebecadcf767931cdc10328ec0..2b880f1186309f5e4629e684f4d8f3dfe7f14cff 100644 (file)
@@ -359,8 +359,6 @@ std::pair< uint64_t, bool>
 StackDistCalc::calcStackDistAndUpdate(const Addr r_address, bool addNewNode)
 {
     Node* newLeafNode;
-    // Return index if the address was already present in stack
-    uint64_t r_index = index;
 
     auto ai = aiMap.lower_bound(r_address);
 
@@ -380,7 +378,7 @@ StackDistCalc::calcStackDistAndUpdate(const Addr r_address, bool addNewNode)
         // key already exists
         // save the index counter value when this address was
         // encountered before and update it to the current index value
-        r_index = ai->second;
+        uint64_t r_index = ai->second;
 
         if (addNewNode) {
             // Update aiMap aiMap(Address) = current index
@@ -462,8 +460,6 @@ StackDistCalc::calcStackDistAndUpdate(const Addr r_address, bool addNewNode)
 std::pair< uint64_t, bool>
 StackDistCalc::calcStackDist(const Addr r_address, bool mark)
 {
-    // Return index if the address was already present in stack
-    uint64_t r_index = index;
     // Default value of isMarked flag for each node.
     bool _mark = false;
 
@@ -480,7 +476,7 @@ StackDistCalc::calcStackDist(const Addr r_address, bool mark)
         // key already exists
         // save the index counter value when this address was
         // encountered before
-        r_index = ai->second;
+        uint64_t r_index = ai->second;
 
         // Get the value of mark flag if previously marked
         _mark = tree[0][r_index]->isMarked;
@@ -569,7 +565,6 @@ void
 StackDistCalc::printStack(int n) const
 {
     Node* node;
-    uint64_t r_index;
     int count = 0;
 
     DPRINTF(StackDist, "Printing last %d entries in tree\n", n);
@@ -578,7 +573,7 @@ StackDistCalc::printStack(int n) const
     for (auto it = tree[0].rbegin(); (count < n) && (it != tree[0].rend());
          ++it, ++count) {
         node = it->second;
-        r_index = node->nodeIndex;
+        uint64_t r_index = node->nodeIndex;
 
         // Lookup aiMap using the index returned by the leaf iterator
         for (auto ai = aiMap.rbegin(); ai != aiMap.rend(); ++ai) {