From: Wei Chen (wychen_at_cs_dot_berkeley_dot_edu)
Date: Wed Dec 08 2004 - 16:31:26 PST
Hi Marc, When compiling programs with our translator, it's best if you invoke it with the "upcc" driver included in our runtime. Not only does it perform the preprocessing and set up the various command line options, but it also passes along a configuration file containing architecture dependent parameters, and our translator will crash if the file is not present. The generated C code from our whirl2c is also probably not going to compile without our runtime headers; one issue for example is that we output global variable declarations using macros to support pthread environments. Since all C programs are UPC programs, one thing you may want to try is just use upcc to compile your C programs and see if that works. If you do want to invoke the translator directly, you can use "upcc -vv" to look at the exact command passed to the translator. Improving the robustness of our translator is an important and ongoing goal for us, and we'd be happy to help you get a large piece of code to go through our translator/whirl2c. As for your second question, we have not made any structural changes to WHIRL other than adding a few fields in the symbol table. All UPC specific constructs are represented using existing WHIRL nodes and are distinguished by their type information. Wei Marc Gonzalez-Sigler wrote: > Hello, > > I've been asked to make Open64's whirl2c and whirl2f work reliably > enough that it is possible to: > > 1. Translate SPECfp2000 source code into WHIRL > 2. Apply preopt and LNO > 3. Regenerate source code > 4. Compile with GCC on amd64 or i386 > > Costin Iancu said: > > Roy Ju from Intel mentioned some time ago that they might have > a cleaned up version of whirl2c that works well. I do not think > it made it into the ORC release. > > Has there been any news of this version? > > Greg Lindahl said you (LBL+UCB) had already made many improvements to > SGI's whirl2c. I checked wn2c.cxx but I am not familiar enough yet > with the code to understand the improvements. > > I downloaded berkeley_upc_translator-2.0.1.tar.gz and compiled it on > Linux/i386 with GCC 3.2.2 > > Is your whirl2c supposed to work with WHIRL files produced by ORC 2.1? > (Perhaps my environment is not set up correctly.) > > $ cat testcase.c > struct foo { int x; int y[3]; } bar; > > int main(void) > { > bar.y[1] = 666666; > return 0; > } > > $ orcc -fe -keep testcase.c > > $ upc_whirl2c testcase.B > > ### Assertion failure at line 932 of ../../be/whirl2c/ty2c.cxx: > ### Compiler Error in file testcase.c during Post LNO Processing phase: > ### Unexpected TY_kind (0) in TY2C_translate() > > Did you modify the WHIRL? > > On a related subject, can I simply feed pre-processed C the gfec > binary to produce a WHIRL file, and then use ORC's preopt and LNO? >