Changeset 90152a4 for tests/alloc.c


Ignore:
Timestamp:
Aug 27, 2018, 4:40:34 PM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
b7c89aa
Parents:
f9feab8 (diff), 305581d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into cleanup-dtors

File:
1 moved

Legend:

Unmodified
Added
Removed
  • tests/alloc.c

    rf9feab8 r90152a4  
    1010// Created On       : Wed Feb  3 07:56:22 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 20 16:01:10 2017
    13 // Update Count     : 318
     12// Last Modified On : Thu Aug  9 06:21:35 2018
     13// Update Count     : 337
    1414//
    1515
     
    1818#include <stdint.h>                                                                             // uintptr_t
    1919#include <stdlib.h>                                                                             // posix_memalign
    20 #include <fstream>
    21 #include <stdlib>                                                                                       // access C malloc, realloc
     20#include <fstream.hfa>
     21#include <stdlib.hfa>                                                                           // access C malloc, realloc
    2222
    2323int * foo( int * p, int c ) { return p; }
     
    2727int main( void ) {
    2828        size_t dim = 10;
     29        char fill = '\xff';
    2930        int * p;
    30         char fill = '\1';
    3131
    3232        // allocation, non-array types
    3333
    34         p = (int *)(void *)malloc( sizeof(*p) );                   // C malloc, type unsafe
     34        // int & r = malloc();
     35        // r = 0xdeadbeef;
     36        // printf( "C   malloc %#x\n", r );
     37        // free( &r );
     38
     39        p = (int *)malloc( sizeof(*p) );                                        // C malloc, type unsafe
    3540        *p = 0xdeadbeef;
    3641        printf( "C   malloc %#x\n", *p );
     
    4954        p = alloc( fill );                                  // CFA alloc, fill
    5055        printf( "CFA alloc, fill %08x\n", *p );
     56        free( p );
    5157
    5258
     
    5460        printf( "\n" );
    5561
    56         p = (int *)calloc( dim, sizeof( *p ) );                    // C array calloc, type unsafe
     62        p = (int *)calloc( dim, sizeof( *p ) );                         // C array calloc, type unsafe
    5763        printf( "C   array calloc, fill 0\n" );
    58         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
     64        for ( i; dim ) { printf( "%#x ", p[i] ); }
    5965        printf( "\n" );
    6066        free( p );
     
    6268        p = calloc( dim );                                  // CFA array calloc, type safe
    6369        printf( "CFA array calloc, fill 0\n" );
    64         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
     70        for ( i; dim ) { printf( "%#x ", p[i] ); }
    6571        printf( "\n" );
    6672        free( p );
    6773
    6874        p = alloc( dim );                                   // CFA array alloc, type safe
    69         for ( int i = 0; i < dim; i += 1 ) { p[i] = 0xdeadbeef; }
     75        for ( i; dim ) { p[i] = 0xdeadbeef; }
    7076        printf( "CFA array alloc, no fill\n" );
    71         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
     77        for ( i; dim ) { printf( "%#x ", p[i] ); }
    7278        printf( "\n" );
    7379        free( p );
    7480
    7581        p = alloc( 2 * dim, fill );                         // CFA array alloc, fill
    76         printf( "CFA array alloc, fill %#x\n", fill );
    77         for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
     82        printf( "CFA array alloc, fill %#hhx\n", fill );
     83        for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
    7884        printf( "\n" );
    7985        // do not free
     
    8389        printf( "\n" );
    8490
    85         p = (int *)(void *)realloc( p, dim * sizeof(*p) );         // C realloc
    86         for ( int i = 0; i < dim; i += 1 ) { p[i] = 0xdeadbeef; }
     91        p = (int *)realloc( p, dim * sizeof(*p) );                      // C realloc
     92        for ( i; dim ) { p[i] = 0xdeadbeef; }
    8793        printf( "C   realloc\n" );
    88         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
     94        for ( i; dim ) { printf( "%#x ", p[i] ); }
    8995        printf( "\n" );
    9096
    9197        p = realloc( p, 2 * dim * sizeof(*p) );             // CFA realloc
    92         for ( int i = dim; i < 2 * dim; i += 1 ) { p[i] = 0x1010101; }
     98        for ( i; dim ~ 2 * dim ) { p[i] = 0x1010101; }
    9399        printf( "CFA realloc\n" );
    94         for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
     100        for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
    95101        printf( "\n" );
    96102        // do not free
     
    101107
    102108        p = alloc( p, dim );                                // CFA resize array alloc
    103         for ( int i = 0; i < dim; i += 1 ) { p[i] = 0xdeadbeef; }
     109        for ( i; dim ) { p[i] = 0xdeadbeef; }
    104110        printf( "CFA resize alloc\n" );
    105         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
     111        for ( i; dim ) { printf( "%#x ", p[i] ); }
    106112        printf( "\n" );
    107113
    108114        p = alloc( p, 2 * dim );                            // CFA resize array alloc
    109         for ( int i = dim; i < 2 * dim; i += 1 ) { p[i] = 0x1010101; }
     115        for ( i; dim ~ 2 * dim ) { p[i] = 0x1010101; }
    110116        printf( "CFA resize array alloc\n" );
    111         for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
     117        for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
    112118        printf( "\n" );
    113119
    114120        p = alloc( p, dim );                                // CFA array alloc
    115121        printf( "CFA resize array alloc\n" );
    116         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
     122        for ( i; dim ) { printf( "%#x ", p[i] ); }
    117123        printf( "\n" );
    118124
     
    122128        p = alloc( p, dim, fill );                          // CFA array alloc, fill
    123129        printf( "CFA resize array alloc, fill\n" );
    124         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] ); }
     130        for ( i; dim ) { printf( "%#x ", p[i] ); }
    125131        printf( "\n" );
    126132
    127133        p = alloc( p, 2 * dim, fill );                      // CFA array alloc, fill
    128134        printf( "CFA resize array alloc, fill\n" );
    129         for ( int i = 0; i < 2 * dim; i += 1 ) { printf( "%#x ", p[i] ); }
     135        for ( i; 2 * dim ) { printf( "%#x ", p[i] ); }
    130136        printf( "\n" );
    131137
    132138        p = alloc( p, dim, fill );                          // CFA array alloc, fill
    133139        printf( "CFA resize array alloc, fill\n" );
    134         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x ", p[i] );; }
     140        for ( i; dim ) { printf( "%#x ", p[i] );; }
    135141        printf( "\n" );
    136142        free( p );
     
    187193        stp = align_alloc( Alignment, dim );                // CFA array memalign
    188194        assert( (uintptr_t)stp % Alignment == 0 );
    189         for ( int i = 0; i < dim; i += 1 ) { stp[i] = (Struct){ 42, 42.5 }; }
     195        for ( i; dim ) { stp[i] = (Struct){ 42, 42.5 }; }
    190196        printf( "CFA array align_alloc\n" );
    191         for ( int i = 0; i < dim; i += 1 ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
     197        for ( i; dim ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
    192198        printf( "\n" );
    193199        free( stp );
     
    196202        assert( (uintptr_t)stp % Alignment == 0 );
    197203        printf( "CFA array align_alloc, fill\n" );
    198         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x %a, ", stp[i].x, stp[i].y ); }
     204        for ( i; dim ) { printf( "%#x %a, ", stp[i].x, stp[i].y ); }
    199205        printf( "\n" );
    200206        free( stp );
     
    213219        printf( "\n" );
    214220
    215         memset( sta, dim, fill );                           // CFA array memset, type safe
     221        amemset( sta, fill, dim );                                                      // CFA array memset, type safe
    216222        printf( "CFA array memset\n" );
    217         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x %a, ", sta[i].x, sta[i].y ); }
    218         printf( "\n" );
    219 
    220         memcpy( sta1, sta, dim );                           // CFA array memcpy, type safe
    221         printf( "CFA memcpy\n" );
    222         for ( int i = 0; i < dim; i += 1 ) { printf( "%#x %a, ", sta1[i].x, sta1[i].y ); }
     223        for ( i; dim ) { printf( "%#x %a, ", sta[i].x, sta[i].y ); }
     224        printf( "\n" );
     225
     226        amemcpy( sta1, sta, dim );                                                      // CFA array memcpy, type safe
     227        printf( "CFA array memcpy\n" );
     228        for ( i; dim ) { printf( "%#x %a, ", sta1[i].x, sta1[i].y ); }
    223229        printf( "\n" );
    224230
     
    235241        stp = anew( dim, 42, 42.5 );
    236242        printf( "CFA array new initialize\n" );
    237         for ( int i = 0; i < dim; i += 1 ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
     243        for ( i; dim ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
    238244        printf( "\n" );
    239245        stp1 = anew( dim, 42, 42.5 );
    240         for ( int i = 0; i < dim; i += 1 ) { printf( "%d %g, ", stp1[i].x, stp1[i].y ); }
     246        for ( i; dim ) { printf( "%d %g, ", stp1[i].x, stp1[i].y ); }
    241247        printf( "\n" );
    242248        adelete( dim, stp, dim, stp1 );
     
    254260        free( p );
    255261
     262#ifdef ERR1
    256263        stp = malloc();
    257264        printf( "\nSHOULD FAIL\n" );
    258 #ifdef ERR1
    259         p = alloc( stp, dim * sizeof(*stp) );
     265        p = realloc( stp, dim * sizeof( *stp ) );
     266        p = alloc( stp, dim * sizeof( *stp ) );
    260267        p = memset( stp, 10 );
    261268        p = memcpy( &st1, &st );
Note: See TracChangeset for help on using the changeset viewer.