steakhal added a comment.

In D88477#2304708 <https://reviews.llvm.org/D88477#2304708>, @NoQ wrote:

> I'm trying to say that the value produced by the load should not be the same 
> as the stored value, because these two values are of different types. When 
> exactly does the first value change into the second value is a different 
> story; the current grand vision around which the code is written says that it 
> changes during load, therefore it's the load code (step #2) that's to blame.

Are you implying that the second dereference of `b` should produce an lvalue of 
the type `char *`, instead of the type of the SVal 
`&Element{SymRegion{reg_$0<int * a>},0 S64b,unsigned char}`.
So, I should do this cast when we evaluate the dereference, and produce an 
lvalue of the static type, aka binding the SVal `&Element{SymRegion{reg_$0<int 
* a>},0 S64b,char*}` to it.
In the AST, it is the line `@1`:

  `-IfStmt
    -BinaryOperator 'bool' '=='
     |-ImplicitCastExpr 'char *' <LValueToRValue>
  @1:| `-UnaryOperator 'char *' lvalue prefix '*' cannot overflow
     |   `-ImplicitCastExpr 'char **' <LValueToRValue>
     |     `-UnaryOperator 'char **' lvalue prefix '*' cannot overflow
     |       `-ImplicitCastExpr 'char ***' <LValueToRValue>
     |         `-DeclRefExpr 'char ***' lvalue ParmVar 0x55e808fe8188 'b' 'char 
***'
     | `-ImplicitCastExpr 'char *' <NullToPointer>
      `-IntegerLiteral 'int' 0

To do this, I would have to modify the `ExprEngine::handleUOExtension` to not 
just simply lookup the corresponding SVal of the Environment's ExprBindings, 
but also apply the cast if necessary.
Am I on the right track now?

PS: I tried to implement this, but I failed to reuse the other overloads of 
`getSVal` to accomplish this.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88477/new/

https://reviews.llvm.org/D88477

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to