================
Comment at: lib/CodeGen/CGAtomic.cpp:1011
@@ +1010,3 @@
+  AtomicInfo AI(*this, LV);
+  return CGM.getCodeGenOpts().MSVolatile && !AI.shouldUseLibcall() &&
+         (LV.isVolatile() || hasVolatileMember(LV.getType()));
----------------
majnemer wrote:
> dvyukov wrote:
> > I don't get the !AI.shouldUseLibcall() part.
> > If the atomic operation would use a libcall, then you don't turn volatile 
> > access into atomic? Why? How is it related to libcalls?
> `shouldUseLibcall` means that than atomic operation is not suitably aligned 
> or sized to be lowered to a `load atomic` or `store atomic` instruction.  
> These conditions are identical to the conditions that MSVC uses to say that a 
> volatile load or store will also have acquire or release semantics.
Doesn't shouldUseLibcall also mean that the value is too fat for backend 
codegen, so just call a library functions (e.g. a 64-bit store on a 32-bit 
platform)? That's what I figure out from the name. Perhaps deserves a comment.

http://reviews.llvm.org/D7580

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