[Prev][Next][Index]

Re: installation problem on rs6000



>I'm trying to install the Sage++1.7 on rs6000 model 550.
>
>"make install" gives me:
> (...)
>Then I go to the demo array_decl, change the g++ to xlC (as advised  
>by Prof Gannon)
>in the Makefile. Then "make" generates:
>---------------------------------------------------
>        xlC -I../../../lib/include -I../../../h -g  -c main.C
>"main.C", line 47.26: 1540-058: (S) Operand of "&" operator must be  
>an lvalue.
>make: 1254-004 The error code from the last command is 1.
>
>Make Quitting.

Well, it looks like you have a very "picky" (i.e., strict) compiler.  
Try replacing the code in 

void declare_array(SgFile *f)
with the following code:

void declare_array(SgFile *f){
   SgStatement *s = f->firstStatement();
   SgStatement *mymain = f->mainProgram();
   SgArrayType *ar_type = new SgArrayType(*SgTypeInt());
   ar_type->addDimension(NULL);
   SgValueExp * texp = new SgValueExp(2);
   ar_type->addDimension(texp);
   SgSymbol * xsymb =new SgVariableSymb("x", *ar_type , *mymain);
   SgExpression *xref = new SgArrayRefExp(*xsymb);
   xref->setLhs(*(ar_type->getDimList()));
   SgExpression * one = new SgValueExp(1);
   SgExpression * two = new SgValueExp(2);
   SgExpression * three = new SgValueExp(3);
   SgExpression * four2 = new SgValueExp(4);
   SgExprListExp * ls = new SgExprListExp(*one);
   ls->append(*two);
   ls->append(*three);
   ls->append(*four2);
  SgExpression * in_ls = new SgInitListExp(*ls);
  SgExpression & aexp = SgAssignOp(*xref, *in_ls);
  SgExpression * as_ex = & aexp;
  SgExpression * as_ex_ls = new SgExprListExp(*as_ex);
  SgStatement * ar_in = new SgVarDeclStmt(*as_ex_ls,*SgTypeInt()); 


  ar_in->setControlParent(*mymain);
  s->insertStmtAfter(*ar_in);

}	

Let me know if this compiles and works. Also, if you send me the  
error message that your compiler generates for main.C in new_file  
maybe I can fix that too.   --Beata