================ 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
