erichkeane added inline comments.

================
Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:620
+  case UO_Deref:  // *x
+  case UO_Not:    // ~x
+  case UO_Real:   // __real x
----------------
tbaeder wrote:
> aaron.ballman wrote:
> > tbaeder wrote:
> > > aaron.ballman wrote:
> > > > This is reachable and will always return true thanks to the magic of 
> > > > integer promotions:
> > > > ```
> > > > void func() {
> > > >   bool b = true;
> > > >   b = ~b;
> > > > }
> > > > ```
> > > This code path is not just for boolean values though.
> > All the more reason to be worried about `~` being marked as unreachable (I 
> > mostly worry because people often try to make bit fiddling operations 
> > constant expressions when possible, so this seems pretty likely to be hit). 
> > Perhaps make it into an `assert(false && "operation not supported yet");` 
> > or something more loud?
> How is that different? It's just a marker for me so I know later in 
> development that this is not implemented yet. And now that I'm writing this, 
> I guess I see what you mean. Yes, it's not unreachable, but it shouldn't be 
> reached when testing what is currently implemented.
Aaron: we tend to NEVER use 'assert(false...' and instead use llvm_unreachable 
for 'not implemented yet' quite often in clang. I don't see the semantic 
difference here?


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

https://reviews.llvm.org/D132098

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

Reply via email to