<s> set = single_set ( insn ) ; if ( set && ! MEM_P ( SET_DEST ( set ) ) && reg_overlap_mentioned_p ( reg , SET_DEST ( set ) ) ) return <NUM_LIT> ; while ( ( insn = NEXT_INSN ( insn ) ) ) { rtx set ; code = GET_CODE ( insn ) ; if ( code == CODE_LABEL ) return <NUM_LIT> ; if ( ! INSN_P ( insn ) ) continue ; if ( code == JUMP_INSN ) return <NUM_LIT> ; else if ( code == INSN && GET_CODE ( PATTERN ( insn ) ) == SEQUENCE ) { rtx_sequence * seq = as_a < rtx_sequence * > ( PATTERN ( insn ) ) ; int retval = <NUM_LIT> ; for ( int i = <NUM_LIT> ; i < seq -> len ( ) ; i ++ ) { rtx_insn * this_insn = seq -> insn ( i ) ; rtx set = single_set ( this_insn ) ; if ( CALL_P ( this_insn ) ) code = CALL_INSN ; else if ( JUMP_P ( this_insn ) ) { if ( INSN_ANNULLED_BRANCH_P ( this_insn ) ) return <NUM_LIT> ;


<s> char * specfile_name ; const char * mmcu = NULL ; if ( verbose_flag ) fnotice ( stderr , <STR_LIT> , __FUNCTION__ , argc ) ; switch ( argc ) { case <NUM_LIT> : fatal_error ( input_location , <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; case <NUM_LIT> : if ( <NUM_LIT> == strcmp ( <STR_LIT> , argv [ <NUM_LIT> ] ) ) { return X_NODEVLIB ; } mmcu = AVR_MMCU_DEFAULT ; break ; default : mmcu = argv [ <NUM_LIT> ] ; for ( int i = <NUM_LIT> ; i < argc ; i ++ ) if ( <NUM_LIT> != strcmp ( mmcu , argv [ i ] ) ) { error ( <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; } break ; } specfile_name = concat ( argv [ <NUM_LIT> ] , dir_separator_str , <STR_LIT> , mmcu , NULL ) ;

if ( verbose_flag ) fnotice ( stderr , <STR_LIT> , __FUNCTION__ , mmcu , __FUNCTION__ , specfile_name ) ;


<s> for ( int i = <NUM_LIT> ; i < argc ; i ++ ) if ( <NUM_LIT> != strcmp ( mmcu , argv [ i ] ) ) { error ( <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; } break ; } specfile_name = concat ( argv [ <NUM_LIT> ] , dir_separator_str , <STR_LIT> , mmcu , NULL ) ; if ( verbose_flag ) fnotice ( stderr , <STR_LIT> , __FUNCTION__ , mmcu , __FUNCTION__ , specfile_name ) ; for ( const char * s = mmcu ; * s ; s ++ ) if ( ! ISALNUM ( * s ) && '-' != * s && '_' != * s ) { error ( <STR_LIT> , mmcu , <STR_LIT> , * s ) ; return X_NODEVLIB ; }

if ( ( <NUM_LIT> == strncmp ( mmcu , <STR_LIT> , strlen ( <STR_LIT> ) ) && specfile_name [ <NUM_LIT> ] == '.' ) || ( IS_ABSOLUTE_PATH ( specfile_name ) && ! access ( specfile_name , R_OK ) ) ) {


<s> error ( <STR_LIT> , mcu , filename ) ; if ( strncmp ( mcu , <STR_LIT> , strlen ( <STR_LIT> ) ) ) avr_inform_devices ( ) ;


<s> if ( strncmp ( mcu , <STR_LIT> , strlen ( <STR_LIT> ) ) ) avr_inform_devices ( ) ; avr_inform_core_architectures ( ) ;


<s> default : mmcu = argv [ <NUM_LIT> ] ; for ( int i = <NUM_LIT> ; i < argc ; i ++ ) if ( <NUM_LIT> != strcmp ( mmcu , argv [ i ] ) ) { error ( <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; } break ; } for ( const char * s = mmcu ; * s ; s ++ ) if ( ! ISALNUM ( * s ) && '-' != * s && '_' != * s ) { error ( <STR_LIT> , mmcu , <STR_LIT> , * s ) ;


<s> } for ( const char * s = mmcu ; * s ; s ++ ) if ( ! ISALNUM ( * s ) && '-' != * s && '_' != * s ) { error ( <STR_LIT> , mmcu , <STR_LIT> , * s ) ; return X_NODEVLIB ; }


<s> switch ( argc ) { case <NUM_LIT> : fatal_error ( input_location , <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; case <NUM_LIT> : if ( strcmp ( <STR_LIT> , argv [ <NUM_LIT> ] ) == <NUM_LIT> ) { return X_NODEVLIB ; } mmcu = AVR_MMCU_DEFAULT ; break ; default : mmcu = argv [ <NUM_LIT> ] ; for ( int i = <NUM_LIT> ; i < argc ; i ++ ) if ( strcmp ( mmcu , argv [ i ] ) != <NUM_LIT> ) { error ( <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; } break ; } for ( const char * s = mmcu ; * s ; s ++ ) if ( ! ISALNUM ( * s ) && '-' != * s && '_' != * s ) { error ( <STR_LIT> , mmcu , <STR_LIT> , * s ) ; return X_NODEVLIB ;


<s> fatal_error ( input_location , <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; case <NUM_LIT> : if ( strcmp ( <STR_LIT> , argv [ <NUM_LIT> ] ) == <NUM_LIT> ) { return X_NODEVLIB ; } mmcu = AVR_MMCU_DEFAULT ; break ; default : mmcu = argv [ <NUM_LIT> ] ; for ( int i = <NUM_LIT> ; i < argc ; i ++ ) if ( strcmp ( mmcu , argv [ i ] ) != <NUM_LIT> ) { error ( <STR_LIT> , <STR_LIT> ) ;


<s> if ( verbose_flag ) fnotice ( stderr , <STR_LIT> , __FUNCTION__ , argc ) ; switch ( argc ) { case <NUM_LIT> : fatal_error ( input_location , <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ; case <NUM_LIT> : if ( strcmp ( <STR_LIT> , argv [ <NUM_LIT> ] ) == <NUM_LIT> ) { return X_NODEVLIB ; } mmcu = AVR_MMCU_DEFAULT ; break ; default : mmcu = argv [ <NUM_LIT> ] ; for ( int i = <NUM_LIT> ; i < argc ; i ++ ) if ( strcmp ( mmcu , argv [ i ] ) != <NUM_LIT> ) { error ( <STR_LIT> , <STR_LIT> ) ; return X_NODEVLIB ;


<s> dbl = <NUM_LIT> ; ldb = dbl ; } else if ( strcmp ( argv [ i ] , <STR_LIT> ) == <NUM_LIT> ) { ldb = dbl = <NUM_LIT> ; } else if ( strcmp ( argv [ i ] , <STR_LIT> ) == <NUM_LIT> ) { ldb = dbl = <NUM_LIT> ; } else if ( strcmp ( argv [ i ] , <STR_LIT> ) == <NUM_LIT> ) { ldb = <NUM_LIT> ; dbl = ldb ; } }


<s> dbl = <NUM_LIT> ; ldb = dbl ; } else if ( strcmp ( argv [ i ] , <STR_LIT> ) == <NUM_LIT> ) { ldb = dbl = <NUM_LIT> ; } else if ( strcmp ( argv [ i ] , <STR_LIT> ) == <NUM_LIT> ) { ldb = dbl = <NUM_LIT> ; } else if ( strcmp ( argv [ i ] , <STR_LIT> ) == <NUM_LIT> ) { ldb = <NUM_LIT> ; dbl = ldb ; } } return concat ( <STR_LIT> , dbl == <NUM_LIT> ? <STR_LIT> : <STR_LIT> , <STR_LIT> , ldb == <NUM_LIT> ? <STR_LIT> : <STR_LIT> , NULL ) ;


<s> fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; int wrap_k = mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : <NUM_LIT> ; fprintf ( f , <STR_LIT> ) ; if ( wrap_k == <NUM_LIT> ) fprintf ( f , <STR_LIT> ) ; else if ( wrap_k > <NUM_LIT> ) fprintf ( f , <STR_LIT> , wrap_k ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , LINK_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , LINK_ARCH_SPEC ) ; if ( is_device && flash_pm_offset ) fprintf ( f , <STR_LIT> , flash_pm_offset ) ; fprintf ( f , <STR_LIT> ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; if ( mcu -> data_section_start != arch -> default_data_section_start ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> data_section_start ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; if ( mcu -> text_section_start != <NUM_LIT> ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> text_section_start ) ; fprintf ( f , <STR_LIT> ) ; } if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , rcall_spec ) ; fprintf ( f , <STR_LIT> , sp8_spec ) ; fprintf ( f , <STR_LIT> , help_dev_lib_name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> macro ) ; if ( flash_pm_offset ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , flash_pm_offset ) ; } fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; } fprintf ( f , <STR_LIT> ) ; fclose ( f ) ;


<s> sp8_spec = sp8 ? <STR_LIT> : <STR_LIT> ; } fprintf ( f , <STR_LIT> <STR_LIT> ) ; if ( is_arch ) fprintf ( f , <STR_LIT> , arch -> name ) ; else fprintf ( f , <STR_LIT> , mcu -> name , arch -> name , sp8 ? <NUM_LIT> : <NUM_LIT> ) ; fprintf ( f , <STR_LIT> , header ) ; if ( is_device ) fprintf ( f , <STR_LIT> , help_copy_paste ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; } fprintf ( f , <STR_LIT> <STR_LIT> , mcu -> n_flash ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , ASM_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; int wrap_k = str_prefix_p ( mcu -> name , <STR_LIT> ) ? <NUM_LIT> : str_prefix_p ( mcu -> name , <STR_LIT> ) ? <NUM_LIT> : ( str_prefix_p ( mcu -> name , <STR_LIT> ) || str_prefix_p ( mcu -> name , <STR_LIT> ) ) ? <NUM_LIT> : ( str_prefix_p ( mcu -> name , <STR_LIT> ) || str_prefix_p ( mcu -> name , <STR_LIT> ) || str_prefix_p ( mcu -> name , <STR_LIT> ) ) ? <NUM_LIT> : <NUM_LIT> ; fprintf ( f , <STR_LIT> ) ; if ( wrap_k ) fprintf ( f , <STR_LIT> , wrap_k ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , LINK_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , LINK_ARCH_SPEC ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; if ( mcu -> data_section_start != arch -> default_data_section_start ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> data_section_start ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; if ( mcu -> text_section_start != <NUM_LIT> ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> text_section_start ) ; fprintf ( f , <STR_LIT> ) ; }


<s> return <NUM_LIT> == strncmp ( str , prefix , strlen ( prefix ) ) ;


<s> fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; int wrap_k = str_prefix_p ( mcu -> name , <STR_LIT> ) ? <NUM_LIT> : str_prefix_p ( mcu -> name , <STR_LIT> ) ? <NUM_LIT> : ( str_prefix_p ( mcu -> name , <STR_LIT> ) || str_prefix_p ( mcu -> name , <STR_LIT> ) ) ? <NUM_LIT> : ( str_prefix_p ( mcu -> name , <STR_LIT> ) || str_prefix_p ( mcu -> name , <STR_LIT> ) || str_prefix_p ( mcu -> name , <STR_LIT> ) ) ? <NUM_LIT> : <NUM_LIT> ; fprintf ( f , <STR_LIT> ) ; if ( wrap_k ) fprintf ( f , <STR_LIT> , wrap_k ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , LINK_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , LINK_ARCH_SPEC ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; if ( mcu -> data_section_start != arch -> default_data_section_start ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> data_section_start ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; if ( mcu -> text_section_start != <NUM_LIT> ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> text_section_start ) ; fprintf ( f , <STR_LIT> ) ; } if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , sp8_spec ) ; fprintf ( f , <STR_LIT> , help_dev_lib_name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> macro , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; }


<s> bool errata_skip = <NUM_LIT> != ( mcu -> dev_attribute & AVR_ERRATA_SKIP ) ; bool rmw = <NUM_LIT> != ( mcu -> dev_attribute & AVR_ISA_RMW ) ; bool sp8 = <NUM_LIT> != ( mcu -> dev_attribute & AVR_SHORT_SP ) ; bool is_arch = NULL == mcu -> macro ; bool is_device = ! is_arch ; if ( is_arch && ( ARCH_AVR2 == arch_id || ARCH_AVR25 == arch_id ) ) { sp8_spec = <STR_LIT> ; } else { sp8_spec = sp8 ? <STR_LIT> : <STR_LIT> ; } fprintf ( f , <STR_LIT> <STR_LIT> ) ; if ( is_arch ) fprintf ( f , <STR_LIT> , arch -> name ) ; else fprintf ( f , <STR_LIT> , mcu -> name , arch -> name , sp8 ? <NUM_LIT> : <NUM_LIT> ) ; fprintf ( f , <STR_LIT> , header ) ; if ( is_device ) fprintf ( f , <STR_LIT> , help_copy_paste ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; }


<s> if ( is_arch && ( ARCH_AVR2 == arch_id || ARCH_AVR25 == arch_id ) ) { sp8_spec = <STR_LIT> ; } else { sp8_spec = sp8 ? <STR_LIT> : <STR_LIT> ; } fprintf ( f , <STR_LIT> <STR_LIT> ) ; if ( is_arch ) fprintf ( f , <STR_LIT> , arch -> name ) ; else fprintf ( f , <STR_LIT> , mcu -> name , arch -> name , sp8 ? <NUM_LIT> : <NUM_LIT> ) ; fprintf ( f , <STR_LIT> , header ) ; if ( is_device ) fprintf ( f , <STR_LIT> , help_copy_paste ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; } int n_flash = <NUM_LIT> + ( mcu -> flash_size - <NUM_LIT> ) / <NUM_LIT> ; fprintf ( f , <STR_LIT> <STR_LIT> , n_flash ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , absdata ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , ASM_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ;


<s> if ( is_arch ) fprintf ( f , <STR_LIT> , arch -> name ) ; else fprintf ( f , <STR_LIT> , mcu -> name , arch -> name , sp8 ? <NUM_LIT> : <NUM_LIT> , rcall ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , header ) ; if ( is_device ) fprintf ( f , <STR_LIT> , help_copy_paste ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; } int n_flash = <NUM_LIT> + ( mcu -> flash_size - <NUM_LIT> ) / <NUM_LIT> ; fprintf ( f , <STR_LIT> <STR_LIT> , n_flash ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , absdata ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , ASM_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; int wrap_k = mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : <NUM_LIT> ; fprintf ( f , <STR_LIT> ) ; if ( wrap_k == <NUM_LIT> ) fprintf ( f , <STR_LIT> ) ; else if ( wrap_k > <NUM_LIT> ) fprintf ( f , <STR_LIT> , wrap_k ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , LINK_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , LINK_ARCH_SPEC ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; if ( mcu -> data_section_start != arch -> default_data_section_start ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> data_section_start ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; if ( mcu -> text_section_start != <NUM_LIT> ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> text_section_start ) ; fprintf ( f , <STR_LIT> ) ; } if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , rcall_spec ) ; fprintf ( f , <STR_LIT> , sp8_spec ) ;

fprintf ( f , <STR_LIT> , help_dev_lib_name ) ;


<s> fprintf ( f , <STR_LIT> <STR_LIT> ) ; if ( is_arch ) fprintf ( f , <STR_LIT> , arch -> name ) ; else fprintf ( f , <STR_LIT> , mcu -> name , arch -> name , sp8 ? <NUM_LIT> : <NUM_LIT> , rcall ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , header ) ; if ( is_device ) fprintf ( f , <STR_LIT> , help_copy_paste ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; } int n_flash = <NUM_LIT> + ( mcu -> flash_size - <NUM_LIT> ) / <NUM_LIT> ; fprintf ( f , <STR_LIT> <STR_LIT> , n_flash ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , absdata ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , ASM_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; int wrap_k = mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : <NUM_LIT> ; fprintf ( f , <STR_LIT> ) ; if ( wrap_k == <NUM_LIT> ) fprintf ( f , <STR_LIT> ) ; else if ( wrap_k > <NUM_LIT> ) fprintf ( f , <STR_LIT> , wrap_k ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , LINK_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , LINK_ARCH_SPEC ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; if ( mcu -> data_section_start != arch -> default_data_section_start ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> data_section_start ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; if ( mcu -> text_section_start != <NUM_LIT> ) fprintf ( f , <STR_LIT> , <NUM_LIT> + mcu -> text_section_start ) ; fprintf ( f , <STR_LIT> ) ; } if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , rcall_spec ) ; fprintf ( f , <STR_LIT> , sp8_spec ) ; fprintf ( f , <STR_LIT> , help_dev_lib_name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> macro , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ;


<s> static bool str_prefix_p ( const char * str , const char * prefix ) {

return strncmp ( str , prefix , strlen ( prefix ) ) == <NUM_LIT> ;


<s> return strncmp ( str , prefix , strlen ( prefix ) ) == <NUM_LIT> ;


<s> int main ( void ) { for ( const avr_mcu_t * mcu = avr_mcu_types ; mcu -> name ; mcu ++ ) print_mcu ( mcu ) ;


<s> else fprintf ( f , <STR_LIT> , mcu -> name , arch -> name , sp8 ? <NUM_LIT> : <NUM_LIT> , rcall ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , header ) ; if ( is_device ) fprintf ( f , <STR_LIT> , help_copy_paste ) ; if ( is_device ) { fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , mcu -> name ) ; fprintf ( f , <STR_LIT> ) ; } int n_flash = <NUM_LIT> + ( mcu -> flash_size - <NUM_LIT> ) / <NUM_LIT> ; fprintf ( f , <STR_LIT> <STR_LIT> , n_flash ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , absdata ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , arch -> name ) ; fprintf ( f , <STR_LIT> , ASM_RELAX_SPEC ) ; fprintf ( f , <STR_LIT> , rmw ? <STR_LIT> : <STR_LIT> ) ; fprintf ( f , <STR_LIT> , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , errata_skip ? <STR_LIT> : <STR_LIT> ) ; int wrap_k = mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : mcu -> flash_size == <NUM_LIT> ? <NUM_LIT> : <NUM_LIT> ; fprintf ( f , <STR_LIT> ) ; if ( wrap_k == <NUM_LIT> ) fprintf ( f , <STR_LIT> ) ; else if ( wrap_k > <NUM_LIT> ) fprintf ( f , <STR_LIT> , wrap_k ) ; fprintf ( f , <STR_LIT> ) ; fprintf ( f , <STR_LIT> , LINK_RELAX_SPEC ) ;

fprintf ( f , <STR_LIT> , LINK_ARCH_SPEC ) ;


<s> int i , n = ( int ) ( ARRAY_SIZE ( prefixes ) ) ; for ( i = <NUM_LIT> ; i < n ; i ++ ) if ( str_prefix_p ( str , prefixes [ i ] ) ) return i ;


<s> static const char * const prefixes [ ] = { <STR_LIT> , <STR_LIT> , <STR_LIT> , <STR_LIT> , <STR_LIT> , <STR_LIT> } ; int i , n = ( int ) ( ARRAY_SIZE ( prefixes ) ) ;

for ( i = <NUM_LIT> ; i < n ; i ++ ) if ( str_prefix_p ( str , prefixes [ i ] ) ) return i ;


<s> printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; for ( mcu = avr_mcu_types ; mcu -> name ; mcu ++ ) { if ( mcu -> macro == NULL ) { arch_id = mcu -> arch_id ; print_mcus ( n_mcus ) ; n_mcus = <NUM_LIT> ; for ( i = <NUM_LIT> ; i < ARRAY_SIZE ( avr_texinfo ) ; i ++ ) if ( arch_id == avr_texinfo [ i ] . arch_id ) printf ( <STR_LIT> , mcu -> name , avr_texinfo [ i ] . texinfo ) ; } else if ( arch_id == ( enum avr_arch_id ) mcu -> arch_id ) {


<s> while ( * a && * b ) { if ( letter ( * a ) && digit ( * b ) ) return - <NUM_LIT> ; if ( digit ( * a ) && letter ( * b ) ) return <NUM_LIT> ; if ( * a != * b ) return * a - * b ;


<s> const avr_mcu_t * mcu ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; for ( mcu = avr_mcu_types ; mcu -> name ; mcu ++ ) { if ( mcu -> macro == NULL ) { arch_id = mcu -> arch_id ; print_mcus ( n_mcus ) ; n_mcus = <NUM_LIT> ; for ( i = <NUM_LIT> ; i < sizeof ( avr_texinfo ) / sizeof ( * avr_texinfo ) ; i ++ ) if ( arch_id == avr_texinfo [ i ] . arch_id ) printf ( <STR_LIT> , mcu -> name , avr_texinfo [ i ] . texinfo ) ; }

else if ( arch_id == ( enum avr_arch_id ) mcu -> arch_id ) {


<s> printf ( <STR_LIT> , mcu_name [ i ] , i == n_mcus - <NUM_LIT> ? <STR_LIT> : <STR_LIT> ) ; if ( i && ! strcmp ( mcu_name [ i ] , mcu_name [ i - <NUM_LIT> ] ) ) {


<s> size_t i ; if ( ! n_mcus ) return ; qsort ( mcu_name , n_mcus , sizeof ( char * ) , comparator ) ; printf ( <STR_LIT> ) ; for ( i = <NUM_LIT> ; i < n_mcus ; i ++ ) { printf ( <STR_LIT> , mcu_name [ i ] , i == n_mcus - <NUM_LIT> ? <STR_LIT> : <STR_LIT> ) ; if ( i && ! strcmp ( mcu_name [ i ] , mcu_name [ i - <NUM_LIT> ] ) ) { duplicate = <NUM_LIT> ; fprintf ( stderr , <STR_LIT> , mcu_name [ i ] ) ;


<s> printf ( <STR_LIT> <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; for ( mcu = avr_mcu_types ; mcu -> name ; mcu ++ ) { if ( mcu -> macro == NULL ) { arch_id = mcu -> arch_id ; print_mcus ( n_mcus ) ; n_mcus = <NUM_LIT> ; for ( i = <NUM_LIT> ; i < sizeof ( avr_texinfo ) / sizeof ( * avr_texinfo ) ; i ++ ) if ( arch_id == avr_texinfo [ i ] . arch_id ) printf ( <STR_LIT> , mcu -> name , avr_texinfo [ i ] . texinfo ) ; } else if ( arch_id == ( enum avr_arch_id ) mcu -> arch_id ) { mcu_name [ n_mcus ++ ] = mcu -> name ; }


<s> print_mcus ( n_mcus ) ; n_mcus = <NUM_LIT> ; for ( i = <NUM_LIT> ; i < sizeof ( avr_texinfo ) / sizeof ( * avr_texinfo ) ; i ++ ) if ( arch_id == avr_texinfo [ i ] . arch_id ) printf ( <STR_LIT> , mcu -> name , avr_texinfo [ i ] . texinfo ) ; }


<s> arch_id = mcu -> arch_id ; print_mcus ( n_mcus ) ; n_mcus = <NUM_LIT> ; for ( i = <NUM_LIT> ; i < sizeof ( avr_texinfo ) / sizeof ( * avr_texinfo ) ; i ++ ) if ( arch_id == avr_texinfo [ i ] . arch_id ) printf ( <STR_LIT> , mcu -> name , avr_texinfo [ i ] . texinfo ) ;


<s> printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; printf ( <STR_LIT> ) ; for ( mcu = avr_mcu_types ; mcu -> name ; mcu ++ ) { if ( mcu -> macro == NULL ) { arch_id = mcu -> arch_id ; print_mcus ( n_mcus ) ; n_mcus = <NUM_LIT> ; for ( i = <NUM_LIT> ; i < sizeof ( avr_texinfo ) / sizeof ( * avr_texinfo ) ; i ++ ) if ( arch_id == avr_texinfo [ i ] . arch_id ) printf ( <STR_LIT> , mcu -> name , avr_texinfo [ i ] . texinfo ) ; } else if ( arch_id == ( enum avr_arch_id ) mcu -> arch_id ) { mcu_name [ n_mcus ++ ] = mcu -> name ; } } print_mcus ( n_mcus ) ; printf ( <STR_LIT> ) ; return EXIT_SUCCESS ;


<s> static int comparator ( const void * va , const void * vb ) { const avr_mcu_t * mcu_a = * ( const avr_mcu_t * const * ) va ; const avr_mcu_t * mcu_b = * ( const avr_mcu_t * const * ) vb ; const char * a = mcu_a -> name ; const char * b = mcu_b -> name ; int c = c_prefix ( a ) - c_prefix ( b ) ; if ( c ) return c ; c = ( int ) mcu_a -> flash_size - ( int ) mcu_b -> flash_size ; if ( c ) return c ; while ( * a && * b ) { c = c_number ( a ) - c_number ( b ) ; if ( c ) return c ; if ( * a != * b ) return * a - * b ; a ++ ;


<s> const char * b = mcu_b -> name ; int c = c_prefix ( a ) - c_prefix ( b ) ; if ( c ) return c ; c = ( int ) mcu_a -> flash_size - ( int ) mcu_b -> flash_size ; if ( c ) return c ; while ( * a && * b ) { c = c_number ( a ) - c_number ( b ) ; if ( c ) return c ; if ( * a != * b ) return * a - * b ; a ++ ;


if ( digit ( * a ) && ! digit ( * ( a - <NUM_LIT> ) ) ) {


<s> int i , n = ( int ) ( sizeof ( prefixes ) / sizeof ( * prefixes ) ) ; for ( i = <NUM_LIT> ; i < n ; i ++ ) if ( str_prefix_p ( str , prefixes [ i ] ) ) return i ; return n ;


<s> for ( i = <NUM_LIT> ; i < sizeof ( avr_texinfo ) / sizeof ( * avr_texinfo ) ; i ++ ) if ( arch_id == avr_texinfo [ i ] . arch_id ) printf ( <STR_LIT> , mcu -> name , avr_texinfo [ i ] . texinfo ) ; } else if ( arch_id == ( enum avr_arch_id ) mcu -> arch_id ) {


<s> if ( ! n_mcus ) return ; qsort ( mcus , n_mcus , sizeof ( avr_mcu_t * ) , comparator ) ; printf ( <STR_LIT> ) ;

for ( i = <NUM_LIT> ; i < n_mcus ; i ++ ) {