[LLVMdev] Mod for using GAS with MS VC++

Aaron Gray angray at beeb.net
Mon Jul 11 16:49:52 PDT 2005


>> Here is a mod to X86 that allows GAS to be used with MS Visual C++.
>>
>> I introduces a 'forWindows' variable like 'forCygwin' in th 
>> X86SharedAsmPrinter class.
>>
>
> A couple of comments:
>
> 1. Please send patches instead of full files.  The best way to do this is
>    to use CVS like this:  'cvs diff -u' in the directory that you care
>    about.  You can also specify specific files to diff as well.

Okay, I will do this in future, our posts crossed so I have not done that 
for the MASM backend.
I will do this in future. If you want me to redo the MASM Printer as diff's 
I can do so tommorow as it is late now.

> 2. Please update to the latest CVS bits.

Okay I may have been behind but am still not used to using CVS and how to 
reintegrate changes that go cross purpose with stuff I already have written 
but do not want to release yet. So I may have gotten out of sync here.

I resync'ed and make the changes for the MASM Printer again earlier, but did 
not do diff's.

> 3. You need to invent a target triple for your new configuration.  You'll
>    notice that the forCygwin/forDarwin variables are set based on the
>    target triple of the module... as you coded it, forWindows is only
>    ever set if the t-t is empty.

Right, presumably Wndows does not set the TT. Should Windows or MSVC++ have 
one ?
If so how do I go about it. Maybe Jeff should be involved ?

> 4. The name forWindows isn't very specific, as there are multiple dev
>    systems available on windows (including cygwin, mingw, masm, nasm,
>    etc).  Please use something more specific.

Maybe it should be MSVC specific then ?

> 5. I notice that the stuff you are controlling enables/disables the exact
>    same stuff as needed for cygwin.  Will this change in the future?

Same as Cygwin, so MSVC++ build, gas generated code, can be run on gas.

>> This may prompt thurther normalization, on the otherhand it may not :)
>
> Yes, I think it will.  :)   In particular, instead of a bunch of checks 
> based on the target, what we really want is something like this:
>
>  ... in the AsmPrinter ctor...
>  if (isDarwin) {
>    TargetUsesFooFeature = true;
>    TargetUsesBarFeature = true;
>    TargetUsesBazFeature = false;
>  } else if (isCygwin) {
>    ...
>  }
> etc.
>
> Then instead of code that looks like this:
>
>   if (!forCygwin && !forDarwin && !forWindows && I->hasInternalLinkage())
>     O << "\t.local " << name << "\n";
>
> We would have:
>
>   if (TargetUsesSymbolsMarkedLocal && I->hasInternalLinkage())
>     O << "\t.local " << name << "\n";
>
> ... or something.

Yes that would be much better and more normalized.

Aaron




More information about the llvm-dev mailing list