http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56801



             Bug #: 56801

           Summary: Internal Compiler Error when compiling relaxed

                    transaction

    Classification: Unclassified

           Product: gcc

           Version: 4.7.2

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: libitm

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: sp...@cse.lehigh.edu





I am receiving the following error:

  internal compiler error: in expand_call_tm, at trans-mem.c:2280



When compiling a simple program.  The following test case is derived from

memcached 1.4.13:



// filename: testcase.c



#include <stdio.h>

#include <stdlib.h>



__attribute__((transaction_callable))

void slabs_adjust_mem_requested(unsigned int id, size_t old, size_t ntotal);



typedef struct {

    unsigned int size;

    unsigned int perslab;



    void *slots;

    unsigned int sl_curr;



    void *end_page_ptr;

    unsigned int end_page_free;



    unsigned int slabs;



    void **slab_list;

    unsigned int list_size;



    unsigned int killing;

    size_t requested;

} slabclass_t;



static slabclass_t slabclass[(200 + 1)];

static int power_largest;



void slabs_adjust_mem_requested(unsigned int id, size_t old, size_t ntotal)

{

    __transaction_relaxed {

    slabclass_t *p;

    if (id < 1 || id > power_largest) {

        fprintf(stderr, "Internal error! Invalid slab class\n");

        abort();

    }



    p = &slabclass[id];

    p->requested = p->requested - old + ntotal;

    }

}





Compilation line:



gcc -std=gnu11 -g -O2 -fgnu-tm -pthread -c testcase.c -o testcase.o

Reply via email to