jfb added inline comments. ================ Comment at: lib/Frontend/InitPreprocessor.cpp:305 @@ +304,3 @@ + if (TypeWidth == TypeAlign && (TypeWidth & (TypeWidth - 1)) == 0 && + TypeWidth <= InlineWidth) + return Always; ---------------- bcraig wrote: > jyknight wrote: > > jfb wrote: > > > bcraig wrote: > > > > On some targets (like Hexagon), 4-byte values are cheap to inline, but > > > > 1-byte values are not. Clang is spotty about checking this, but > > > > TargetInfo::hasBuiltinAtomic seems like the right function to ask, if > > > > you have access to it. > > > You're commenting on: > > > ``` > > > if (TypeWidth == TypeAlign && (TypeWidth & (TypeWidth - 1)) == 0 && > > > TypeWidth <= InlineWidth) > > > ``` > > > ? > > > > > > Are you asking for a separate change, or for a change to my patch? > > That issue in clang's purview in any case; if hexagon wants to lower a > > 1-byte cmpxchg to a compiler runtime function, it should do so in its > > backend. > I am asking for a change to this patch. Don't assume that all widths smaller > than some value are inline-able and lock free, because that may not be the > case. A 4 byte cmpxchg could be lock free, while a 1 byte cmpxchg may not be > lock free. Are you asking me to change this line: ``` if (TypeWidth == TypeAlign && (TypeWidth & (TypeWidth - 1)) == 0 && TypeWidth <= InlineWidth) ``` ?
In what way? Please be more specific. http://reviews.llvm.org/D17950 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits