tccgen: 32bits: fix PTR +/- long long

Previously in order to perform a ll+ll operation tcc
was trying to 'lexpand' PTR in gen_opl which did
not work well.  The case:


    int printf(const char *, ...);
    char t[] = "012345678";

    int main(void)
    {
        char *data = t;
        unsigned long long r = 4;
        unsigned a = 5;
        unsigned long long b = 12;

        *(unsigned*)(data + r) += a - b;

        printf("data %s\n", data);
        return 0;
    }
This commit is contained in:
grischka
2016-10-13 19:21:43 +02:00
parent 8986bc8af4
commit ed15cddacd
3 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,15 @@
int printf(const char *, ...);
char t[] = "012345678";
int main(void)
{
char *data = t;
unsigned long long r = 4;
unsigned a = 5;
unsigned long long b = 12;
*(unsigned*)(data + r) += a - b;
printf("data = \"%s\"\n", data);
return 0;
}

View File

@ -0,0 +1 @@
data = "0123-5678"