================
Comment at: lib/CodeGen/CGAtomic.cpp:985
@@ +984,3 @@
+  // Okay, turn that back into the original value type.
+  if (auto *Result = atomics.tryConvertIntToValue(load))
+    return RValue::get(Result);
----------------
rjmccall wrote:
> ABataev wrote:
> > rjmccall wrote:
> > > Is there a good reason that this has to be conditional rather than just 
> > > being a single convertIntToRValue method?  It's okay to pass a 
> > > ReturnValueSlot in.
> > If some value cannot be bitcasted from Int to ValueType (from Int128 to 
> > fp80, for example), we have to create a temp. But we have to create 
> > different temps for AtomicLoad() and for AtomicCompareExchange() (here we 
> > must create a structure of 2 elements). And these temps must be created 
> > only if we were unable to directly cast from int to value type.
> Wait, what?  Why is EmitAtomicCompareExchange returning a first-class 
> aggregate?  Just have it return a std::pair of values.  That will also let 
> you return an RValue for the current value, which is probably more generally 
> useful to its callers.
Ok, will do

http://reviews.llvm.org/D6499

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to