[PATCH] D19968: [scan-build] fix warnings emitted on LLVM Hexagon code base

Apelete Seketeli via llvm-commits llvm-commits at lists.llvm.org
Thu May 5 06:21:13 PDT 2016


apelete created this revision.
apelete added a reviewer: kparzysz.
apelete added a subscriber: llvm-commits.

This path fixes the following warnings that were reported while
running Clang Static Analyzer on Clang code base:

Logic error: called C++ object pointer is null, on files
- lib/Target/Hexagon/RDFGraph.cpp
- lib/Target/Hexagon/HexagonCFGOptimizer.cpp.

Logic error: branch condition evaluates to a garbage value, on file:
- lib/Target/Hexagon/HexagonInstrInfo.cpp.

Signed-off-by: Apelete Seketeli <apelete at seketeli.net>

http://reviews.llvm.org/D19968

Files:
  lib/Target/Hexagon/HexagonCFGOptimizer.cpp
  lib/Target/Hexagon/HexagonInstrInfo.cpp
  lib/Target/Hexagon/RDFGraph.cpp

Index: lib/Target/Hexagon/RDFGraph.cpp
===================================================================
--- lib/Target/Hexagon/RDFGraph.cpp
+++ lib/Target/Hexagon/RDFGraph.cpp
@@ -1564,6 +1564,7 @@
   // Push block delimiters.
   markBlock(BA.Id, DefM);
 
+  assert(BA.Addr && "block node address is needed to create a data-flow link");
   // For each non-phi instruction in the block, link all the defs and uses
   // to their reaching defs. For any member of the block (including phis),
   // push the defs on the corresponding stacks.
Index: lib/Target/Hexagon/HexagonInstrInfo.cpp
===================================================================
--- lib/Target/Hexagon/HexagonInstrInfo.cpp
+++ lib/Target/Hexagon/HexagonInstrInfo.cpp
@@ -1301,7 +1301,7 @@
 
   // Keep a flag for upto 4 operands in the instructions, to indicate if
   // that operand has been constant extended.
-  bool OpCExtended[4];
+  bool OpCExtended[4] = {false};
   if (NumOperands > 4)
     NumOperands = 4;
 
Index: lib/Target/Hexagon/HexagonCFGOptimizer.cpp
===================================================================
--- lib/Target/Hexagon/HexagonCFGOptimizer.cpp
+++ lib/Target/Hexagon/HexagonCFGOptimizer.cpp
@@ -180,6 +180,7 @@
           // Ensure that BB2 has one instruction -- an unconditional jump.
           if ((LayoutSucc->size() == 1) &&
               IsUnconditionalJump(LayoutSucc->front().getOpcode())) {
+            assert(JumpAroundTarget && "jump target is needed to process second basic block");
             MachineBasicBlock* UncondTarget =
               LayoutSucc->front().getOperand(0).getMBB();
             // Check if the layout successor of BB2 is BB3.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19968.56276.patch
Type: text/x-patch
Size: 1681 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160505/cf273b70/attachment.bin>


More information about the llvm-commits mailing list