Hello Michael, I made a re-run for the GCC test suite. I have just noticed that picdtr.c was not uploaded, also I forgot to adapt the new pic option text in it. thus we need to apply the attached patch.
Otherwise, it's all fine. Results (Normal Run): === gcc Summary === # of expected passes 91211 # of unexpected failures 1325 # of unexpected successes 3 # of expected failures 212 # of unresolved testcases 374 # of unsupported tests 2863 Results (with -fPIE -mpic-data-is-text-relative): === gcc Summary === # of expected passes 91243 # of unexpected failures 1208 # of unexpected successes 3 # of expected failures 212 # of unresolved testcases 374 # of unsupported tests 2888 Comparison for PASS-> FAIL is only this one now: PASS->FAIL: gcc.dg/uninit-19.c (test for excess errors) => already fails with -fPIE/-fPIC as mentioned before. On Thu, May 3, 2018 at 7:13 PM, Andrew Sadek <andrew.sadek...@gmail.com> wrote: > --resend Michael's reply > > On Mon, Apr 30, 2018 at 1:19 PM, Michael Eager <ea...@eagerm.com> wrote: >> >> >> Applied -- Committed revision 259758. >> >> Andrew -- Please re-run GCC regression test to verify that nothing >> was lost in the editing. >> >> >> >> -- >> Michael Eager ea...@eagerm.com >> 1960 Park Blvd., Palo Alto, CA 94306 > > > > > -- > > Andrew -- Andrew
Index: picdtr.c =================================================================== --- picdtr.c (nonexistent) +++ picdtr.c (working copy) @@ -0,0 +1,79 @@ +/* { dg-options "-fPIE mpic-data-is-text-relative -save-temps" } */ +/* { dg-do run } */ + +#define TEST_VAR(var,val) (var) = (val); if( (var) != (val)) return 0; + +int foo(unsigned int i); +extern void abort(void); +extern void exit(int); + +unsigned char data[8]; +long bigData[7]; +long var; +typedef struct {int a; short b; long c[1000][1000]; long long d[3][3]; char e; } myDef; +myDef def; +const char* myString; + +/* { dg-final { scan-assembler "mfs\tr20,rpc" } } */ +/* { dg-final { scan-assembler "addik\tr20,r20,8@TXTPCREL" } } */ +/* { dg-final { scan-assembler ",r20,\[^\n]*var\[^\n]*@TXTREL" } } */ +/* { dg-final { scan-assembler-not ",r0,\[^\n]*var" } } */ +/* { dg-final { scan-assembler ",r20,\[^\n]*bigData\[^\n]*@TXTREL" } } */ +/* { dg-final { scan-assembler-not ",r0,\[^\n]*bigData" } } */ +/* { dg-final { scan-assembler ",r20,\[^\n]*def\[^\n]*@TXTREL" } } */ +/* { dg-final { scan-assembler-not ",r0,\[^\n]*def" } } */ +/* { dg-final { scan-assembler ",r20,\[^\n]*data\[^\n]*@TXTREL" } } */ +/* { dg-final { scan-assembler-not ",r0,\[^\n]*data" } } */ +/* { dg-final { scan-assembler ",r20,\[^\n]*L\[^\n]*@TXTREL" } } */ +/* { dg-final { scan-assembler-not ",r0,\[^\n]*L" } } */ + + + +void foo2() { + var++; +} + +int foo (unsigned int i) { + + TEST_VAR(var,123) + TEST_VAR(data[i],77) + TEST_VAR(data[2],88) + TEST_VAR(def.a,897) + TEST_VAR(bigData[i],78) + TEST_VAR(bigData[2],777) + TEST_VAR(def.b,12333); + TEST_VAR(def.c[i][i],5); + TEST_VAR(def.c[0][1],7); + TEST_VAR(def.d[1][2],123); + TEST_VAR(def.e,7); + TEST_VAR(bigData[i+1],bigData[i*2]); + + foo2(); + + myString = "Hello"; + + switch(i){ + + case 1: var += 2; break; + case 2: var += 3; break; + case 3: var += 5; break; + case 4: var += 7; break; + case 5: var += 8; break; + default: var = 0; + + } + + return 1; + +} + +int main() { + + int result = foo(3); + if(result != 1 || var != 129) { + abort(); + } + + exit(0); + +}