summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorStuart Hastings <stuart@apple.com>2010-03-17 17:51:08 +0000
committerStuart Hastings <stuart@apple.com>2010-03-17 17:51:08 +0000
commitb0a72ec2eb7843b5feca7cd22450903988f0e368 (patch)
tree24c73697396e8555a009ca91d34d1a6d5f392d31 /test
parent5b33f3148c7495a5411109454fd1bd74baa291f6 (diff)
downloadllvm-b0a72ec2eb7843b5feca7cd22450903988f0e368.tar.gz
llvm-b0a72ec2eb7843b5feca7cd22450903988f0e368.tar.bz2
llvm-b0a72ec2eb7843b5feca7cd22450903988f0e368.tar.xz
Testcase for r98728.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98744 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/FrontendObjC/2010-03-17-StructRef.m43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/FrontendObjC/2010-03-17-StructRef.m b/test/FrontendObjC/2010-03-17-StructRef.m
new file mode 100644
index 0000000000..a8a509c2e9
--- /dev/null
+++ b/test/FrontendObjC/2010-03-17-StructRef.m
@@ -0,0 +1,43 @@
+// RUN: %llvmgcc %s -S -o - | FileCheck %s
+// Bitfield references must not touch memory outside of the enclosing
+// struct. Radar 7639995
+typedef signed char BOOL;
+@protocol NSObject
+- (id)init;
+@end
+@interface NSObject <NSObject> {}
+@end
+@interface IMAVChatParticipant : NSObject {
+ int _ardRole;
+ int _state;
+ int _avRelayStatus;
+ int _chatEndedReason;
+ int _chatError;
+ unsigned _sendingAudio:1;
+ unsigned _sendingVideo:1;
+ unsigned _sendingAuxVideo:1;
+ unsigned _audioMuted:1;
+ unsigned _videoPaused:1;
+ unsigned _networkStalled:1;
+ unsigned _isInitiator:1;
+ unsigned _isAOLInterop:1;
+ unsigned _isRecording:1;
+ unsigned _isUsingICE:1;
+}
+@end
+@implementation IMAVChatParticipant
+- (id) init {
+ self = [super init];
+ if ( self ) {
+ BOOL blah = (BOOL)1;
+ // We're expecting these three bitfield assignments will generate i8 stores.
+ _sendingAudio = (BOOL)1;
+ _isUsingICE = (BOOL)1;
+ _isUsingICE = blah;
+ // CHECK: store i8
+ // CHECK: store i8
+ // CHECK: store i8
+ }
+ return self;
+}
+@end