+2004-12-08 Nick Clifton <nickc@redhat.com>
+
+ * gcc.target/xstormy16/bss_below100: New directory containing tests.
+ * gcc.target/xstormy16/data_below100: Likewise.
+ * gcc.target/xstormy16/sfr: Likewise.
+ * gcc.target/xstormy16/below100.S: New test source file.
+ * gcc.target/xstormy16/below100.ld: New test linker script.
+ * gcc.target/xstormy16/xstormy16.exp: Run the new tests.
+ * gcc.target/xstormy16/below_100.c: Fix scan to allow for bn or
+ bp instructions.
+ * gcc.target/xstormy16/bp.c: Likewise.
+
+ * gcc.target/xstormy16/bss_below100: New files:
+ 01_const_to_b100b.c, 02_const_to_b100w.c, 03_var_to_b100b.c,
+ 04_var_to_b100w.c, 05_b100b_to_var.c, 06_b100w_to_var.c,
+ 10_set_b100b_bit_0.c, 10_set_b100b_bit_7.c, 11_clr_b100b_bit_0.c,
+ 11_clr_b100b_bit_7.c, 12_if1_b100b_bit_0.c, 12_if1_b100b_bit_3.c,
+ 12_if1_b100b_bit_7.c, 13_if0_b100b_bit_0.c, 13_if0_b100b_bit_3.c,
+ 13_if0_b100b_bit_7.c, 14_set_b100w_bit_0.c, 14_set_b100w_bit_7.c,
+ 14_set_b100w_bit_8.c, 14_set_b100w_bit_f.c, 15_clr_b100w_bit_0.c,
+ 15_clr_b100w_bit_7.c, 15_clr_b100w_bit_8.c, 15_clr_b100w_bit_f.c,
+ 16_if1_b100w_bit_0.c, 16_if1_b100w_bit_3.c, 16_if1_b100w_bit_7.c,
+ 16_if1_b100w_bit_8.c, 16_if1_b100w_bit_b.c, 16_if1_b100w_bit_f.c,
+ 17_if0_b100w_bit_0.c, 17_if0_b100w_bit_3.c, 17_if0_b100w_bit_7.c,
+ 17_if0_b100w_bit_8.c, 17_if0_b100w_bit_b.c, 17_if0_b100w_bit_f.c,
+ 20_set_b100b_bitfield_0.c, 20_set_b100b_bitfield_7.c,
+ 21_clr_b100b_bitfield_0.c, 21_clr_b100b_bitfield_7.c,
+ 22_if1_b100b_bitfield_0.c, 22_if1_b100b_bitfield_3.c,
+ 22_if1_b100b_bitfield_7.c, 23_if0_b100b_bitfield_0.c,
+ 23_if0_b100b_bitfield_3.c, 23_if0_b100b_bitfield_7.c,
+ 24_set_b100w_bitfield_0.c, 24_set_b100w_bitfield_7.c,
+ 24_set_b100w_bitfield_8.c, 24_set_b100w_bitfield_f.c,
+ 25_clr_b100w_bitfield_0.c, 25_clr_b100w_bitfield_7.c,
+ 25_clr_b100w_bitfield_8.c, 25_clr_b100w_bitfield_f.c,
+ 26_if1_b100w_bitfield_0.c, 26_if1_b100w_bitfield_3.c,
+ 26_if1_b100w_bitfield_7.c, 26_if1_b100w_bitfield_8.c,
+ 26_if1_b100w_bitfield_b.c, 26_if1_b100w_bitfield_f.c,
+ 27_if0_b100w_bitfield_0.c, 27_if0_b100w_bitfield_3.c,
+ 27_if0_b100w_bitfield_7.c, 27_if0_b100w_bitfield_8.c,
+ 27_if0_b100w_bitfield_b.c, 27_if0_b100w_bitfield_f.c
+
+ * gcc.target/xstormy16/data_below100: New files:
+ 01_const_to_b100b.c, 02_const_to_b100w.c, 03_var_to_b100b.c,
+ 04_var_to_b100w.c, 05_b100b_to_var.c, 06_b100w_to_var.c,
+ 10_set_b100b_bit_0.c, 10_set_b100b_bit_7.c, 11_clr_b100b_bit_0.c,
+ 11_clr_b100b_bit_7.c, 12_if1_b100b_bit_0.c, 12_if1_b100b_bit_3.c,
+ 12_if1_b100b_bit_7.c, 13_if0_b100b_bit_0.c, 13_if0_b100b_bit_3.c,
+ 13_if0_b100b_bit_7.c, 14_set_b100w_bit_0.c, 14_set_b100w_bit_7.c,
+ 14_set_b100w_bit_8.c, 14_set_b100w_bit_f.c, 15_clr_b100w_bit_0.c,
+ 15_clr_b100w_bit_7.c, 15_clr_b100w_bit_8.c, 15_clr_b100w_bit_f.c,
+ 16_if1_b100w_bit_0.c, 16_if1_b100w_bit_3.c, 16_if1_b100w_bit_7.c,
+ 16_if1_b100w_bit_8.c, 16_if1_b100w_bit_b.c, 16_if1_b100w_bit_f.c,
+ 17_if0_b100w_bit_0.c, 17_if0_b100w_bit_3.c, 17_if0_b100w_bit_7.c,
+ 17_if0_b100w_bit_8.c, 17_if0_b100w_bit_b.c, 17_if0_b100w_bit_f.c,
+ 20_set_b100b_bitfield_0.c, 20_set_b100b_bitfield_7.c,
+ 21_clr_b100b_bitfield_0.c, 21_clr_b100b_bitfield_7.c,
+ 22_if1_b100b_bitfield_0.c, 22_if1_b100b_bitfield_3.c,
+ 22_if1_b100b_bitfield_7.c, 23_if0_b100b_bitfield_0.c,
+ 23_if0_b100b_bitfield_3.c, 23_if0_b100b_bitfield_7.c,
+ 24_set_b100w_bitfield_0.c, 24_set_b100w_bitfield_7.c,
+ 24_set_b100w_bitfield_8.c, 24_set_b100w_bitfield_f.c,
+ 25_clr_b100w_bitfield_0.c, 25_clr_b100w_bitfield_7.c,
+ 25_clr_b100w_bitfield_8.c, 25_clr_b100w_bitfield_f.c,
+ 26_if1_b100w_bitfield_0.c, 26_if1_b100w_bitfield_3.c,
+ 26_if1_b100w_bitfield_7.c, 26_if1_b100w_bitfield_8.c,
+ 26_if1_b100w_bitfield_b.c, 26_if1_b100w_bitfield_f.c,
+ 27_if0_b100w_bitfield_0.c, 27_if0_b100w_bitfield_3.c,
+ 27_if0_b100w_bitfield_7.c, 27_if0_b100w_bitfield_8.c,
+ 27_if0_b100w_bitfield_b.c, 27_if0_b100w_bitfield_f.c
+
+ * gcc.target/xstormy16/sfr: New files:
+ 01_const_to_sfrb.c, 02_const_to_sfrw.c, 03_var_to_sfrb.c,
+ 04_var_to_sfrw.c, 05_sfrb_to_var.c, 06_sfrw_to_var.c,
+ 10_set_sfrb_bit_0.c, 10_set_sfrb_bit_7.c, 11_clr_sfrb_bit_0.c,
+ 11_clr_sfrb_bit_7.c, 12_if1_sfrb_bit_0.c, 12_if1_sfrb_bit_3.c,
+ 12_if1_sfrb_bit_7.c, 13_if0_sfrb_bit_0.c, 13_if0_sfrb_bit_3.c,
+ 13_if0_sfrb_bit_7.c, 14_set_sfrw_bit_0.c, 14_set_sfrw_bit_3.c,
+ 14_set_sfrw_bit_7.c, 14_set_sfrw_bit_8.c, 14_set_sfrw_bit_b.c,
+ 14_set_sfrw_bit_f.c, 15_clr_sfrw_bit_0.c, 15_clr_sfrw_bit_3.c,
+ 15_clr_sfrw_bit_7.c, 15_clr_sfrw_bit_8.c, 15_clr_sfrw_bit_b.c,
+ 15_clr_sfrw_bit_f.c, 16_if1_sfrw_bit_0.c, 16_if1_sfrw_bit_3.c,
+ 16_if1_sfrw_bit_7.c, 16_if1_sfrw_bit_8.c, 16_if1_sfrw_bit_b.c,
+ 16_if1_sfrw_bit_f.c, 17_if0_sfrw_bit_0.c, 17_if0_sfrw_bit_3.c,
+ 17_if0_sfrw_bit_7.c, 17_if0_sfrw_bit_8.c, 17_if0_sfrw_bit_b.c,
+ 17_if0_sfrw_bit_f.c, 20_set_sfrb_bitfield_0.c,
+ 20_set_sfrb_bitfield_7.c, 21_clr_sfrb_bitfield_0.c,
+ 21_clr_sfrb_bitfield_7.c, 22_if1_sfrb_bitfield_0.c,
+ 22_if1_sfrb_bitfield_3.c, 22_if1_sfrb_bitfield_7.c,
+ 23_if0_sfrb_bitfield_0.c, 23_if0_sfrb_bitfield_3.c,
+ 23_if0_sfrb_bitfield_7.c, 24_set_sfrw_bitfield_0.c,
+ 24_set_sfrw_bitfield_7.c, 24_set_sfrw_bitfield_8.c,
+ 24_set_sfrw_bitfield_f.c, 25_clr_sfrw_bitfield_0.c,
+ 25_clr_sfrw_bitfield_7.c, 25_clr_sfrw_bitfield_8.c,
+ 25_clr_sfrw_bitfield_f.c, 26_if1_sfrw_bitfield_0.c,
+ 26_if1_sfrw_bitfield_3.c, 26_if1_sfrw_bitfield_7.c,
+ 26_if1_sfrw_bitfield_8.c, 26_if1_sfrw_bitfield_b.c,
+ 26_if1_sfrw_bitfield_f.c, 27_if0_sfrw_bitfield_0.c,
+ 27_if0_sfrw_bitfield_3.c, 27_if0_sfrw_bitfield_7.c,
+ 27_if0_sfrw_bitfield_8.c, 27_if0_sfrw_bitfield_b.c,
+ 27_if0_sfrw_bitfield_f.c
+
2004-12-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/18100
--- /dev/null
+/******************************************************************\r
+*** ***\r
+*** crt0 for __BELOW100__ attribute test with SID ***\r
+*** ***\r
+******************************************************************/\r
+\r
+ /*************************************/\r
+ /** Interrupt vectors at 0x8000 **/\r
+ /*************************************/\r
+ .section .int_vec,"ax"\r
+ .global _start\r
+ .align 1\r
+_start:\r
+ jmpf _int_reset\r
+ //jmpf _int_basetimer\r
+ //jmpf _int_timer0\r
+ //jmpf _int_timer1\r
+ //jmpf _int_irq_4\r
+ //jmpf _int_irq_5\r
+ //jmpf _int_port0\r
+ //jmpf _int_port1\r
+ //jmpf _int_irq_8\r
+ //jmpf _int_irq_9\r
+ //jmpf _int_irq_a\r
+ //jmpf _int_irq_b\r
+ //jmpf _int_irq_c\r
+ //jmpf _int_irq_d\r
+ //jmpf _int_irq_e\r
+ //jmpf _int_irq_f\r
+ /*************************************/\r
+ /** reset code **/\r
+ /*************************************/\r
+ .text\r
+_int_reset:\r
+ /*************************************/\r
+ /** setup stack pointer **/\r
+ /*************************************/\r
+ mov sp,#__stack\r
+ /*************************************/\r
+ /** zero .bss section **/\r
+ /*************************************/\r
+ mov r0,#__bss_start\r
+ mov r1,#__bss_end\r
+ mov r2,#0\r
+1: mov.w (r0++),r2\r
+ blt r0,r1,1b\r
+ /*************************************/\r
+ /** copy inital value for .data **/\r
+ /*************************************/\r
+ mov r1,#__data_start\r
+ mov r3,#__data_end\r
+ mov r0,#@lo(__rdata)\r
+ mov r8,#@hi(__rdata)\r
+2: movf.w r2,(r0++)\r
+ bnz r0,#0,3f\r
+ add r8,#1\r
+3: mov.w (r1++),r2\r
+ blt r1,r3,2b\r
+ /*************************************/\r
+ /** call hardware init routine **/\r
+ /*************************************/\r
+ callf _hwinit\r
+ /*************************************/\r
+ /** call initializaton routines **/\r
+ /*************************************/\r
+ callf _init\r
+ /*************************************/\r
+ /** setup fini routines to be **/\r
+ /** called from exit **/\r
+ /*************************************/\r
+ mov r2,#@fptr(_fini)\r
+ callf atexit\r
+ /*************************************/\r
+ /** call main() with empty **/\r
+ /** argc/argv/envp **/\r
+ /*************************************/\r
+ mov r2,#0\r
+ mov r3,#0\r
+ mov r4,#0\r
+ callf main\r
+ /*************************************/\r
+ /** return from main() **/\r
+ /*************************************/\r
+ callf exit\r
+ /*************************************/\r
+ /** should never reach this code **/\r
+ /*************************************/\r
+ jmpf _start\r
+ /*************************************/\r
+ /** default h/w initialize routine **/\r
+ /** and default _init/_finit for **/\r
+ /** -nostartfiles option **/\r
+ /*************************************/\r
+ .globl _hwinit\r
+ .weak _hwinit\r
+_hwinit:\r
+ .globl _init\r
+ .weak _init\r
+_init:\r
+ .globl _fini\r
+ .weak _fini\r
+_fini:\r
+ ret\r
+\r
+/******************************************************************\r
+*******************************************************************\r
+*** ***\r
+*** Chip information data for LC59_32K ***\r
+*** Written by T.Matsukawa ***\r
+*** ***\r
+*******************************************************************\r
+******************************************************************/\r
+\r
+ /*************************************/\r
+ /** Define convenient macros **/\r
+ /*************************************/\r
+#define BCD(x) (((x)/10)%10)*0x10+((x)%10)\r
+#define BCD4(x) BCD((x)/100),BCD(x)\r
+#define BCD6(x) BCD((x)/10000),BCD((x)/100),BCD(x)\r
+ /*************************************/\r
+ /** Define memory sizes **/\r
+ /*************************************/\r
+#define RAM_SIZE 0x7E00\r
+#define ROM_SIZE 0x78000\r
+#define VRAM_SIZE 0x0000\r
+#define VRAM_ROW 0\r
+#define VRAM_COLUMN 0\r
+#define CGROM_SIZE 0x0000\r
+#define PROTECT_SIZE 0x0000\r
+\r
+ /*************************************/\r
+ /** section ".chip_info" **/\r
+ /*************************************/\r
+ .section .chip_info,"a"\r
+ .space 0xb8,0x00\r
+ /*************************************/\r
+ /** B8-BB : User option address **/\r
+ /*************************************/\r
+ .word 0x00000\r
+ .global __reset_vector\r
+#if 0x00000==0\r
+ .equ __reset_vector,0x08000\r
+#else\r
+ .equ __reset_vector,0x00000\r
+#endif\r
+ /*************************************/\r
+ /** BC-BF : Flash Protect address **/\r
+ /*************************************/\r
+#if PROTECT_SIZE==0\r
+ .word 0x00000000\r
+#else\r
+ .word 0x08000+ROM_SIZE-PROTECT_SIZE\r
+#endif\r
+ /*************************************/\r
+ /** C0-CF : Fixed string **/\r
+ /*************************************/\r
+ .ascii "CHIPINFORMATION"\r
+1: .space (0xd0-1b),0x00\r
+ /*************************************/\r
+ /** D0-DF : Chipname **/\r
+ /*************************************/\r
+ .ascii "LC59_32K"\r
+2: .space (0xe0-2b),0x00\r
+ /*************************************/\r
+ /** E0-E1 : Format version(BCD4) **/\r
+ /*************************************/\r
+ .byte 0x10, 0x00\r
+ .space 6, 0x00\r
+ /*************************************/\r
+ /** E8-F5 : Memory sizes **/\r
+ /*************************************/\r
+ .byte BCD4(ROM_SIZE/1024)\r
+ .byte BCD6(RAM_SIZE)\r
+ .byte BCD6(VRAM_SIZE)\r
+ .byte BCD4(VRAM_ROW)\r
+ .byte BCD4(VRAM_COLUMN)\r
+ .byte BCD4(CGROM_SIZE/1024)\r
+ .space 3, 0x00\r
+ /*************************************/\r
+ /** F9 : Package type **/\r
+ /*************************************/\r
+ .byte 0xff\r
+ .space 6, 0x00\r
+\r
+ /*************************************/\r
+ /** In order to link BIOS in library**/\r
+ /*************************************/\r
+ .equ dummy,__bios_entry\r
--- /dev/null
+/******************************************************************
+*******************************************************************
+*** ***
+*** Linker script for xstormy16-elf-gcc ***
+*** For SID RAM=0x7E00 ***
+*** ROM=0x78000 ***
+*** ***
+*******************************************************************
+******************************************************************/
+
+OUTPUT_FORMAT("elf32-xstormy16", "elf32-xstormy16", "elf32-xstormy16")
+OUTPUT_ARCH(xstormy16)
+ENTRY(_start)
+SEARCH_DIR( . )
+GROUP(-lc -lsim -lgcc)
+PROVIDE( __target_package = 0xff);
+
+__malloc_start = 0x7E00;
+
+MEMORY
+{
+ RAM (w) : ORIGIN = 0x00000, LENGTH = 0x07E00
+ CHIP (r) : ORIGIN = 0x07f00, LENGTH = 0x00100
+ ROM (!w) : ORIGIN = 0x08000, LENGTH = 0x78000
+}
+
+SECTIONS
+{
+ /* Zero initialized data with the below100 attribute. */
+ .bss_below100 : {
+ SHORT(0)
+ __bss_start = .;
+ *(.bss_below100)
+ *(.bss_below100.*)
+ . = ALIGN(2);
+ } > RAM
+
+ /* Non-zero initialized data with the below100 attribute. */
+ .data_below100 : AT ( __rdata ) {
+ __data_start = . ;
+ *(.data_0)
+ *(.data_below100)
+ *(.data_below100.*)
+ . = ALIGN(2);
+ } > RAM = 0
+
+ /* Normal non-zero initialized data. */
+ .data : AT ( __rdata + SIZEOF(.data_below100) ) {
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ SORT(CONSTRUCTORS)
+ . = ALIGN(2);
+ __data_end = . ;
+ } > RAM =0
+
+ /* Normal zero initialized data. */
+ .bss : AT (LOADADDR(.data) + SIZEOF(.data)) {
+ *(.dynbss)
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ . = ALIGN(2);
+ __bss_end = .;
+ } > RAM
+
+ /* The top of stack. */
+ __stack = .;
+
+ /* Target chip info. */
+ .chip_info : {
+ KEEP(*(.chip_info))
+ } > CHIP =0
+
+ /* Reset and interrupt vectors at 8000. */
+ .int_vec : {
+ KEEP(*(.int_vec))
+ } > ROM =0
+
+ /* Read only data. */
+ .rodata : {
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ } > ROM =0
+
+ /* C++ Construcrtors and destructors. */
+ .ctors : {
+ KEEP (*crtbegin.o(.ctors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ } > ROM =0
+
+ .dtors : {
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ } > ROM =0
+
+ /* Pointer lookup table.. */
+ .plt : {
+ *(.plt)
+ } > ROM =0
+
+ /* Other information. */
+ .jcr : {
+ KEEP (*(.jcr))
+ } > ROM =0
+
+ .eh_frame : {
+ KEEP (*(.eh_frame))
+ } > ROM =0
+
+ .gcc_except_table : {
+ KEEP (*(.gcc_except_table))
+ } > ROM =0
+
+ /* Initialization values for data. */
+ .data_init (NOLOAD) : {
+ __rdata = .;
+ . += SIZEOF(.data_below100);
+ . += SIZEOF(.data);
+ . += SIZEOF(.bss);
+ } > ROM
+
+ /* Executable code. */
+ .text : {
+ *(.text)
+ *(.text.*)
+ *(.stub)
+ *(.gnu.warning)
+ *(.gnu.linkonce.t.*)
+ } > ROM =0
+
+ /* Startup/finish code. */
+ .init : {
+ KEEP (*crti.o(.init))
+ KEEP (*(EXCLUDE_FILE (*crtn.o ) .init))
+ KEEP (*(SORT(.init.*)))
+ KEEP (*(.init))
+ } > ROM =0
+
+ .fini : {
+ KEEP (*crti.o(.fini))
+ KEEP (*(EXCLUDE_FILE (*crtn.o ) .fini))
+ KEEP (*(SORT(.fini.*)))
+ KEEP (*(.fini))
+ } > ROM =0
+
+ /* Stab debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+
+ /* DWARF debug sections. */
+ /* Symbols in the DWARF debugging sections are relative to
+ the beginning of the section so we begin them at 0. */
+
+ /* DWARF 1. */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+
+ /* GNU DWARF 1 extensions. */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+
+ /* DWARF 1.1 and DWARF 2. */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+
+ /* DWARF 2. */
+ .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+
+ /* SGI/MIPS DWARF 2 extensions. */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler "bn " } } */
-/* { dg-final { scan-assembler "bp " } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
unsigned short a_below __attribute__((__BELOW100__));
unsigned short b_below __attribute__((__BELOW100__));
/* { dg-do compile } */
/* { dg-options "-O2" } */
-/* { dg-final { scan-assembler "bp " } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
#define a_val (*((volatile unsigned char *) 0x7f14))
#define b_val (*((volatile unsigned char *) 0x7f10))
return foo ();
}
-
-
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b B100,#18" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__));
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 = 0x12;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x12) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w B100,#4660" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 = 0x1234;
+}
+
+int
+main (void)
+{
+ *p = 0x9876;
+ Do ();
+ return (*p == 0x1234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b B100,r" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__));
+unsigned char *p = &B100;
+
+unsigned char yData = 0x12;
+
+void
+Do (void)
+{
+ B100 = yData;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x12) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w B100,r" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+unsigned short wData = 0x1234;
+
+void
+Do (void)
+{
+ B100 = wData;
+}
+
+int
+main (void)
+{
+ *p = 0x9876;
+ Do ();
+ return (*p == 0x1234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b r., *B100" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__));
+unsigned char *p = &B100;
+
+unsigned char yData = 0x12;
+
+void
+Do (void)
+{
+ yData = B100;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (yData == 0x34) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,B100" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+unsigned short wData = 0x1234;
+
+void
+Do (void)
+{
+ wData = B100;
+}
+
+int
+main (void)
+{
+ *p = 0x3456;
+ Do ();
+ return (wData == 0x3456) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__));
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x01;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x35) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__));
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x80;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0xb4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__));
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x01;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0xca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__));
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x80;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0x4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x01)
+ {
+ if (B100B & 0x01)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x08)
+ {
+ if (B100B & 0x08)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x80)
+ {
+ if (B100B & 0x80)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x01))
+ {
+ if (!(B100B & 0x01))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x08))
+ {
+ if (!(B100B & 0x08))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x80))
+ {
+ if (!(B100B & 0x80))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x0001;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1235) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x0080;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x12b4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x0100;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1334) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x8000;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x9234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x0001;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xedca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x0080;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xed4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x0100;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xeccb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__));
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x8000;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0x6dcb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0001)
+ {
+ if (B100B & 0x0001)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0008)
+ {
+ if (B100B & 0x0008)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0080)
+ {
+ if (B100B & 0x0080)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0100)
+ {
+ if (B100B & 0x0100)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0800)
+ {
+ if (B100B & 0x0800)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x8000)
+ {
+ if (B100B & 0x8000)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0001))
+ {
+ if (!(B100B & 0x0001))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0008))
+ {
+ if (!(B100B & 0x0008))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0080))
+ {
+ if (!(B100B & 0x0080))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0100))
+ {
+ if (!(B100B & 0x0100))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0800))
+ {
+ if (!(B100B & 0x0800))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x8000))
+ {
+ if (!(B100B & 0x8000))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x35) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0xb4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0xca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0x4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b0)
+ {
+ if (B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b3)
+ {
+ if (B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b7)
+ {
+ if (B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b0)
+ {
+ if (!B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b3)
+ {
+ if (!B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b7)
+ {
+ if (!B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1235) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x12b4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b8 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1334) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b15 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x9234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xedca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xed4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b8 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xeccb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__));
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b15 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0x6dcb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b0)
+ {
+ if (B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b3)
+ {
+ if (B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b7)
+ {
+ if (B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b8)
+ {
+ if (B100B.b8)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b11)
+ {
+ if (B100B.b11)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b15)
+ {
+ if (B100B.b15)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b0)
+ {
+ if (!B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b3)
+ {
+ if (!B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b7)
+ {
+ if (!B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b8)
+ {
+ if (!B100B.b8)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b11)
+ {
+ if (!B100B.b11)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__));
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__));
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b15)
+ {
+ if (!B100B.b15)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b B100,#18" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 = 0x12;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x12) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w B100,#4660" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0x9876;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 = 0x1234;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x1234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b B100,r" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *p = &B100;
+
+unsigned char yData = 0x12;
+
+void
+Do (void)
+{
+ B100 = yData;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x12) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w B100,r" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0x9876;
+unsigned short *p = &B100;
+
+unsigned short wData = 0x1234;
+
+void
+Do (void)
+{
+ B100 = wData;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x1234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b r., *B100" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *p = &B100;
+
+unsigned char yData = 0x12;
+
+void
+Do (void)
+{
+ yData = B100;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (yData == 0x34) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,B100" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0x3456;
+unsigned short *p = &B100;
+
+unsigned short wData = 0x1234;
+
+void
+Do (void)
+{
+ wData = B100;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (wData == 0x3456) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x01;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x35) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x80;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xb4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x01;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100 __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x80;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x01)
+ {
+ if (B100B & 0x01)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x08)
+ {
+ if (B100B & 0x08)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x80)
+ {
+ if (B100B & 0x80)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x01))
+ {
+ if (!(B100B & 0x01))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x08))
+ {
+ if (!(B100B & 0x08))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned char B100A __attribute__ ((__BELOW100__)) = 0x34;
+unsigned char *pA = &B100A;
+unsigned char B100B __attribute__ ((__BELOW100__)) = 0xcb;
+unsigned char *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x80))
+ {
+ if (!(B100B & 0x80))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x0001;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x1235) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x0080;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x12b4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x0100;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x1334) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 |= 0x8000;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x9234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x0001;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xedca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x0080;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xed4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#0" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x0100;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xeccb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#7" } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100 __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *p = &B100;
+
+void
+Do (void)
+{
+ B100 &= ~0x8000;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x6dcb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0001)
+ {
+ if (B100B & 0x0001)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0008)
+ {
+ if (B100B & 0x0008)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0080)
+ {
+ if (B100B & 0x0080)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0100)
+ {
+ if (B100B & 0x0100)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x0800)
+ {
+ if (B100B & 0x0800)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (B100A & 0x8000)
+ {
+ if (B100B & 0x8000)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0001))
+ {
+ if (!(B100B & 0x0001))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0008))
+ {
+ if (!(B100B & 0x0008))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0080))
+ {
+ if (!(B100B & 0x0080))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0100))
+ {
+ if (!(B100B & 0x0100))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x0800))
+ {
+ if (!(B100B & 0x0800))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+unsigned short B100A __attribute__ ((__BELOW100__)) = 0x1234;
+unsigned short *pA = &B100A;
+unsigned short B100B __attribute__ ((__BELOW100__)) = 0xedcb;
+unsigned short *pB = &B100B;
+
+char *
+Do (void)
+{
+ if (!(B100A & 0x8000))
+ {
+ if (!(B100B & 0x8000))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 1;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x35) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 1;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xb4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 0;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *p = (unsigned char *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 0;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b0)
+ {
+ if (B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b3)
+ {
+ if (B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b7)
+ {
+ if (B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b0)
+ {
+ if (!B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b3)
+ {
+ if (!B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0};
+unsigned char *pA = (unsigned char *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1};
+unsigned char *pB = (unsigned char *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b7)
+ {
+ if (!B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 1;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x1235) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 1;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x12b4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b8 = 1;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x1334) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 B100\\+1,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b15 = 1;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x9234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b0 = 0;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xedca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b7 = 0;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xed4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b8 = 0;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0xeccb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 B100\\+1,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100 __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *p = (unsigned short *) &B100;
+
+void
+Do (void)
+{
+ B100.b15 = 0;
+}
+
+int
+main (void)
+{
+ Do ();
+ return (*p == 0x6dcb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b0)
+ {
+ if (B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b3)
+ {
+ if (B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b7)
+ {
+ if (B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b8)
+ {
+ if (B100B.b8)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b11)
+ {
+ if (B100B.b11)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (B100A.b15)
+ {
+ if (B100B.b15)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b0)
+ {
+ if (!B100B.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b3)
+ {
+ if (!B100B.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b7)
+ {
+ if (!B100B.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#0," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#0," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b8)
+ {
+ if (!B100B.b8)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#3," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#3," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b11)
+ {
+ if (!B100B.b11)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] B100A\\+1,#7," } } */
+/* { dg-final { scan-assembler "b\[np\] B100B\\+1,#7," } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+char acDummy[0xf0] __attribute__ ((__BELOW100__));
+BitField B100A __attribute__ ((__BELOW100__)) =
+{
+0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0};
+unsigned short *pA = (unsigned short *) &B100A;
+BitField B100B __attribute__ ((__BELOW100__)) =
+{
+1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1};
+unsigned short *pB = (unsigned short *) &B100B;
+
+char *
+Do (void)
+{
+ if (!B100A.b15)
+ {
+ if (!B100B.b15)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b 32532,#18" } } */
+
+#define SFR (*((volatile unsigned char*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR = 0x12;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x12) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w 32532,#4660" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR = 0x1234;
+}
+
+int
+main (void)
+{
+ *p = 0x9876;
+ Do ();
+ return (*p == 0x1234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b 32532,r" } } */
+
+#define SFR (*((volatile unsigned char*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+unsigned char yData = 0x12;
+
+void
+Do (void)
+{
+ SFR = yData;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x12) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w 32532,r" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+unsigned short wData = 0x1234;
+
+void
+Do (void)
+{
+ SFR = wData;
+}
+
+int
+main (void)
+{
+ *p = 0x9876;
+ Do ();
+ return (*p == 0x1234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b r., *32532" } } */
+
+#define SFR (*((volatile unsigned char*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+unsigned char yData = 0x12;
+
+void
+Do (void)
+{
+ yData = SFR;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (yData == 0x34) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r6,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+unsigned short wData = 0x9876;
+
+void
+Do (void)
+{
+ wData = SFR;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (wData == 0x1234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32532,#0" } } */
+
+#define SFR (*((volatile unsigned char*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x01;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x35) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32532,#7" } } */
+
+#define SFR (*((volatile unsigned char*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x80;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0xb4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32532,#0" } } */
+
+#define SFR (*((volatile unsigned char*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x01;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0xca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32532,#7" } } */
+
+#define SFR (*((volatile unsigned char*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x80;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0x4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+#define SFRA (*((volatile unsigned char*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile unsigned char*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x01)
+ {
+ if (SFRB & 0x01)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+#define SFRA (*((volatile unsigned char*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile unsigned char*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x08)
+ {
+ if (SFRB & 0x08)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+#define SFRA (*((volatile unsigned char*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile unsigned char*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x80)
+ {
+ if (SFRB & 0x80)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+#define SFRA (*((volatile unsigned char*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile unsigned char*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x01))
+ {
+ if (!(SFRB & 0x01))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+#define SFRA (*((volatile unsigned char*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile unsigned char*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x08))
+ {
+ if (!(SFRB & 0x08))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+#define SFRA (*((volatile unsigned char*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile unsigned char*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x80))
+ {
+ if (!(SFRB & 0x80))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x0001;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1235) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x0008;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x123c) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x0080;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x12b4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x0100;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1334) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x0800;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1a34) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR |= 0x8000;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x9234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x0001;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xedca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x0008;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xedc3) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x0080;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xed4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x0100;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xeccb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x0800;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xe5cb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFR (*((volatile unsigned short*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR &= ~0x8000;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0x6dcb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x0001)
+ {
+ if (SFRB & 0x0001)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x0008)
+ {
+ if (SFRB & 0x0008)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x0080)
+ {
+ if (SFRB & 0x0080)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x0100)
+ {
+ if (SFRB & 0x0100)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x0800)
+ {
+ if (SFRB & 0x0800)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA & 0x8000)
+ {
+ if (SFRB & 0x8000)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x0001))
+ {
+ if (!(SFRB & 0x0001))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x0008))
+ {
+ if (!(SFRB & 0x0008))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x0080))
+ {
+ if (!(SFRB & 0x0080))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x0100))
+ {
+ if (!(SFRB & 0x0100))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x0800))
+ {
+ if (!(SFRB & 0x0800))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.w r.,32532" } } */
+
+#define SFRA (*((volatile unsigned short*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile unsigned short*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!(SFRA & 0x8000))
+ {
+ if (!(SFRB & 0x8000))
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32532,#0" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b0 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0x35) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32532,#7" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b7 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x34;
+ Do ();
+ return (*p == 0xb4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32532,#0" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b0 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0xca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32532,#7" } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned char *p = (unsigned char *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b7 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xcb;
+ Do ();
+ return (*p == 0x4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b0)
+ {
+ if (SFRB.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b3)
+ {
+ if (SFRB.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b7)
+ {
+ if (SFRB.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xcb;
+ *pB = 0x34;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b0)
+ {
+ if (!SFRB.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b3)
+ {
+ if (!SFRB.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "b\[np\] " } } */
+
+typedef struct
+{
+ unsigned char b0:1;
+ unsigned char b1:1;
+ unsigned char b2:1;
+ unsigned char b3:1;
+ unsigned char b4:1;
+ unsigned char b5:1;
+ unsigned char b6:1;
+ unsigned char b7:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned char *pA = (unsigned char *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned char *pB = (unsigned char *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b7)
+ {
+ if (!SFRB.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x34;
+ *pB = 0xcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32532,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b0 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1235) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32532,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b7 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x12b4) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32533,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b8 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x1334) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "set1 32533,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b15 = 1;
+}
+
+int
+main (void)
+{
+ *p = 0x1234;
+ Do ();
+ return (*p == 0x9234) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32532,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b0 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xedca) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32532,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b7 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xed4b) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32533,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b8 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0xeccb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "clr1 32533,#7" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFR (*((volatile BitField*)0x7f14))
+unsigned short *p = (unsigned short *) 0x7f14;
+
+void
+Do (void)
+{
+ SFR.b15 = 0;
+}
+
+int
+main (void)
+{
+ *p = 0xedcb;
+ Do ();
+ return (*p == 0x6dcb) ? 0 : 1;
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bn 32532,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b0)
+ {
+ if (SFRB.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bn 32532,#3" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b3)
+ {
+ if (SFRB.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b r., *32532" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b7)
+ {
+ if (SFRB.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bn 32533,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b8)
+ {
+ if (SFRB.b8)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bn 32533,#3" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b11)
+ {
+ if (SFRB.b11)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b r., *32533" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (SFRA.b15)
+ {
+ if (SFRB.b15)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0xedcb;
+ *pB = 0x1234;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bp 32532,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b0)
+ {
+ if (!SFRB.b0)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bp 32532,#3" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b3)
+ {
+ if (!SFRB.b3)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b r., *32532" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b7)
+ {
+ if (!SFRB.b7)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bp 32533,#0" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b8)
+ {
+ if (!SFRB.b8)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "bp 32533,#3" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b11)
+ {
+ if (!SFRB.b11)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
--- /dev/null
+/* { dg-options { -nostartfiles below100.o -Tbelow100.ld -O2 } } */
+/* { dg-final { scan-assembler "mov.b r., *32533" } } */
+
+typedef struct
+{
+ unsigned short b0:1;
+ unsigned short b1:1;
+ unsigned short b2:1;
+ unsigned short b3:1;
+ unsigned short b4:1;
+ unsigned short b5:1;
+ unsigned short b6:1;
+ unsigned short b7:1;
+ unsigned short b8:1;
+ unsigned short b9:1;
+ unsigned short b10:1;
+ unsigned short b11:1;
+ unsigned short b12:1;
+ unsigned short b13:1;
+ unsigned short b14:1;
+ unsigned short b15:1;
+} BitField;
+
+#define SFRA (*((volatile BitField*)0x7f14))
+unsigned short *pA = (unsigned short *) 0x7f14;
+#define SFRB (*((volatile BitField*)0x7f10))
+unsigned short *pB = (unsigned short *) 0x7f10;
+
+char *
+Do (void)
+{
+ if (!SFRA.b15)
+ {
+ if (!SFRB.b15)
+ return "Fail";
+ else
+ return "Success";
+ }
+ else
+ return "Fail";
+}
+
+int
+main (void)
+{
+ *pA = 0x1234;
+ *pB = 0xedcb;
+ return Do ()[0] == 'F';
+}
load_lib gcc-dg.exp
-# If a testcase doesn't have special options, use these.
-global DEFAULT_CFLAGS
-if ![info exists DEFAULT_CFLAGS] then {
- set DEFAULT_CFLAGS " -ansi -pedantic-errors"
-}
-
# Initialize `dg'.
dg-init
+# Assemble the below100.S file which contains
+# support code for the rest of the tests.
+set old-dg-do-what-default "${dg-do-what-default}"
+set dg-do-what-default assemble
+dg-test -keep-output "$srcdir/$subdir/below100.S" "" ""
+set dg-do-what-default run
+
+
# Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
- "" $DEFAULT_CFLAGS
+foreach testcase [lsort [find $srcdir/$subdir *.c]] {
+ global test_counts;
+
+ set base "[file rootname [file tail $testcase]]"
+
+ if ![runtest_file_p $runtests $testcase] {
+ continue
+ }
+
+ set fails_before $test_counts(FAIL,count)
+ dg-test $testcase "--save-temps -fno-inline-functions -L$srcdir/$subdir" ""
+ set fails_after $test_counts(FAIL,count)
+
+ if { $fails_before == $fails_after } {
+ catch "exec rm -f $base.i $base.s $base.o"
+ }
+}
+
+set dg-do-what-default "${old-dg-do-what-default}"
# All done.
dg-finish