picdtr.c: Add test for -fPIE -mpic-data-is-text-relative.
2018-05-06 Andrew Sadek <andrew.sadek.se@gmail.com> * gcc.target/microblaze/others/picdtr.c: Add test for -fPIE -mpic-data-is-text-relative. From-SVN: r259975
This commit is contained in:
parent
8309b221a0
commit
b0e69bd698
2 changed files with 165 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2018-05-06 Andrew Sadek <andrew.sadek.se@gmail.com>
|
||||
|
||||
* gcc.target/microblaze/others/picdtr.c: Add test for
|
||||
-fPIE -mpic-data-is-text-relative.
|
||||
|
||||
2018-05-06 Andre Vehreschild <vehre@gcc.gnu.org>
|
||||
|
||||
PR fortran/85507
|
||||
|
|
160
gcc/testsuite/gcc.target/microblaze/others/picdtr.c
Normal file
160
gcc/testsuite/gcc.target/microblaze/others/picdtr.c
Normal file
|
@ -0,0 +1,160 @@
|
|||
/* { dg-options "-fPIE -mpic-data-text-rel -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);
|
||||
|
||||
}
|
||||
|
||||
/* { dg-options "-fPIE -mpic-data-text-rel -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);
|
||||
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue