NoQ accepted this revision.
NoQ added a comment.


Eww. Weird AST.

I wonder how this should work:

  // RUN: %clang_analyze_cc1 -analyzer-checker debug.ExprInspection 
-fheinous-gnu-extensions -w %s -verify
  int clang_analyzer_eval(int);
  int global;
  void testRValueOutput() {
    int &ref = global;
    ref = 1;
    __asm__("" : "=r"((int)ref));
    clang_analyzer_eval(ref == 1); // currently says UNKNOWN
    clang_analyzer_eval(global == 1); // currently says TRUE

The ultimate solution would probably be to add a fake cloned asm statement to 
the CFG (instead of the real asm statement) that would point to the correct 
output child-expression(s) that are untouched themselves but simply have their 
noop casts removed.

Or we could try

  rC Clang

cfe-commits mailing list

Reply via email to