[LLVMbugs] [Bug 12781] New: -Wuninitialized does not understand conditional operators

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed May 9 14:27:57 PDT 2012


             Bug #: 12781
           Summary: -Wuninitialized does not understand conditional
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Static Analyzer
        AssignedTo: kremenek at apple.com
        ReportedBy: rtrieu at google.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

void foo(bool x) {
  int a;
  int b = a;
  int c = a;

-Wuninitialized properly says a is uninitialized

void foo(bool x) {
  int a;
  int b = x ? a : a;

-Wuninitialized and -Wconditional-uninitialized gives no warning

void foo(bool x) {
  int a;
  int b = x ? a : a;
  int c = a;

Also no warnings

The likely cause of this problem is how the AST is set up for conditional
operators where both expressions are variables.  The l-value to r-value cast
would then be outside of the conditional operator instead of directly on the
DeclRefExprs.  Example AST:
void foo(bool x) (CompoundStmt 0x4afeaa0 <maybe.cc:1:18, line:6:1>
  (DeclStmt 0x4afe868 <line:2:3, col:8>
    0x4afe810 "int a")
  (DeclStmt 0x4afe9c0 <line:3:3, col:20>
    0x4afe890 "int b =
      (ImplicitCastExpr 0x4afe9a8 <col:11, col:19> 'int' <LValueToRValue>
        (ConditionalOperator 0x4afe978 <col:11, col:19> 'int' lvalue
          (ImplicitCastExpr 0x4afe960 <col:11> '_Bool' <LValueToRValue>
            (DeclRefExpr 0x4afe8e8 <col:11> '_Bool' lvalue ParmVar 0x4acc2a0
'x' '_Bool'))
          (DeclRefExpr 0x4afe910 <col:15> 'int' lvalue Var 0x4afe810 'a' 'int')
          (DeclRefExpr 0x4afe938 <col:19> 'int' lvalue Var 0x4afe810 'a'
  (DeclStmt 0x4afea88 <line:5:3, col:12>
    0x4afe9f0 "int c =
      (ImplicitCastExpr 0x4afea70 <col:11> 'int' <LValueToRValue>
        (DeclRefExpr 0x4afea48 <col:11> 'int' lvalue Var 0x4afe810 'a'

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list