| // RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-darwin -fobjc-fragile-abi -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 |