================
@@ -3015,11 +3017,12 @@ llvm::Expected<lldb::ValueObjectSP> 
ValueObject::CastDerivedToBaseType(
 
   lldb::TargetSP target = GetTargetSP();
   // The `value` can be a pointer, but GetChildAtIndex works for pointers too.
-  lldb::ValueObjectSP inner_value;
+  lldb::ValueObjectSP inner_value = GetSP();
 
   for (const uint32_t i : base_type_indices)
     // Force static value, otherwise we can end up with the "real" type.
-    inner_value = GetChildAtIndex(i, /*can_create_synthetic*/ false);
----------------
cmtice wrote:

The difference is that now in each loop iteration the rhs is 
'inner_loop->GetChildAtIndex...', which will be different each iteration 
through the loop; before it was just 'GetChildAtIndex', which did not change on 
each iteration.

re false->true: The original lldb-eval code on which that was based used 
'false', but it was also making the call through the SB API interface 
(SBValues, SBTypes, etc). I found that the cast test cases passed with 
lldb-eval when this value was false, but failed in my translated, migrated 
version. Setting this to true allows those failing test cases to pass.

I don't have any easy way to add those test cases to this PR because they all 
use 'frame variable' (using my DIL implementation) for doing the casts...But I 
do have them, and I am running (and passing) them.

https://github.com/llvm/llvm-project/pull/87197
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to