diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CGObjC.cpp | 4 | ||||
-rw-r--r-- | clang/test/CodeGenObjC/property-aggregate.m | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CGObjC.cpp b/clang/lib/CodeGen/CGObjC.cpp index 8f5e1fb761d..456909bf537 100644 --- a/clang/lib/CodeGen/CGObjC.cpp +++ b/clang/lib/CodeGen/CGObjC.cpp @@ -378,7 +378,9 @@ static void emitStructGetterCall(CodeGenFunction &CGF, ObjCIvarDecl *ivar, /// accesses. They don't have to be fast, just faster than a function /// call and a mutex. static bool hasUnalignedAtomics(llvm::Triple::ArchType arch) { - return (arch == llvm::Triple::x86 || arch == llvm::Triple::x86_64); + // FIXME: Allow unaligned atomic load/store on x86. (It is not + // currently supported by the backend.) + return 0; } /// Return the maximum size that permits atomic accesses for the given diff --git a/clang/test/CodeGenObjC/property-aggregate.m b/clang/test/CodeGenObjC/property-aggregate.m index f4b4dc96151..de93aede445 100644 --- a/clang/test/CodeGenObjC/property-aggregate.m +++ b/clang/test/CodeGenObjC/property-aggregate.m @@ -6,6 +6,8 @@ struct s3 { char c[3]; }; // This structure's size is, so it does, because it can. +// FIXME: But we don't at the moment; the backend doesn't know how to generate +// correct code. struct s4 { char c[4]; }; @interface Test0 @@ -23,7 +25,7 @@ struct s4 { char c[4]; }; // CHECK: call void @objc_copyStruct // CHECK: define internal i32 @"\01-[Test0 s4]"( -// CHECK: load atomic i32* {{%.*}} unordered, align 1 +// CHECK: call void @objc_copyStruct // CHECK: define internal void @"\01-[Test0 setS4:]"( -// CHECK: store atomic i32 {{%.*}}, i32* {{%.*}} unordered, align 1 +// CHECK: call void @objc_copyStruct |