[LLVMbugs] [Bug 10536] New: Wrong implicit cast on inline asm operands

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Jul 29 14:35:45 PDT 2011


           Summary: Wrong implicit cast on inline asm operands
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: matthewbg at google.com
                CC: llvmbugs at cs.uiuc.edu, echristo at gmail.com

$ cat testcases/asm-uninit.cc
inline void atomic_thread_fence_acq_rel() {
  int dummy;
  __asm__ __volatile__("xchg %[value], %[mem]"  
                       : [value] "=r" (dummy)
                       : [mem] "m" (dummy)
                       : "memory");
$ clang -cc1 -fsyntax-only -ast-dump -Wuninitialized testcases/asm-uninit.cc
testcases/asm-uninit.cc:5:37: warning: variable 'dummy' is uninitialized when
used here
                       : [mem] "m" (dummy)
testcases/asm-uninit.cc:2:3: note: variable 'dummy' is declared here
  int dummy;
testcases/asm-uninit.cc:2:12: note: add initialization to silence this warning
  int dummy;
            = 0
inline void atomic_thread_fence_acq_rel() (CompoundStmt 0x30f6a10
<testcases/asm-uninit.cc:1:43, line:7:1>
  (DeclStmt 0x30f6650 <line:2:3, col:12>
    0x30cc390 "int dummy")
  (AsmStmt 0x30f6990 <line:3:3, line:6:34>
    (DeclRefExpr 0x30f67d8 <line:4:40> 'int' lvalue Var 0x30cc390 'dummy'
    (ImplicitCastExpr 0x30f6978 <line:5:37> 'int' <LValueToRValue>
      (DeclRefExpr 0x30f68a8 <col:37> 'int' lvalue Var 0x30cc390 'dummy'

1 warning generated.

We're generating an LValueToRValue cast on the output operand and not on the
input operand, which seems odd (and leads to an uninitialized warning on the
wrong operand).

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