diff options
Diffstat (limited to 'lib/Sema/SemaChecking.cpp')
| -rw-r--r-- | lib/Sema/SemaChecking.cpp | 4 | 
1 files changed, 4 insertions, 0 deletions
| diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index 23a6fc3c4cd4..c3b81b6683d2 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -1604,6 +1604,10 @@ ExprResult Sema::SemaAtomicOpsOverloaded(ExprResult TheCallResult,      return ExprError();    } +  // atomic_fetch_or takes a pointer to a volatile 'A'.  We shouldn't let the +  // volatile-ness of the pointee-type inject itself into the result or the +  // other operands. +  ValType.removeLocalVolatile();    QualType ResultType = ValType;    if (Form == Copy || Form == GNUXchg || Form == Init)      ResultType = Context.VoidTy; | 
