Ping! -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of James Molloy Sent: 18 January 2012 11:59 To: 'Jean-Daniel Dupas' Cc: [email protected] Subject: Re: [cfe-commits] [PATCH] Driver reengineering - first patch
Hi Jean-Daniel, > From dicsussions at http://llvm.org/bugs/show_bug.cgi?id=4127 it was suggested to not use target triple as an argument, but instead having something > like > > '--target=configdb-entry-alias' which would define the corresponding triple. > > Using this flag, you will be able to use --target=linux_distro directly instead of having 2 arguments for this. > > What do you think about this ? I have no issues with this. What I would say, is that this first patch cannot yet completely replace the existing code (which is why it is implemented as a wart on top of the existing codebase). Therefore, I'm loath to change the operation of any non-hidden or obvious options until it is stable. That's why I'm using -ccc-* options at the moment. When it's stable, it's a ten-line patch to switch these off and move over to --target, --triple or whatever we want. Cheers, James -----Original Message----- From: Jean-Daniel Dupas [mailto:[email protected]] Sent: 18 January 2012 11:48 To: James Molloy Cc: [email protected] Subject: Re: [cfe-commits] [PATCH] Driver reengineering - first patch Le 18 janv. 2012 à 12:26, James Molloy a écrit : > Hi, > > The attached patch is the first of the clang driver revamp. This patch has > no intended functionality change unless you use the new hidden flag > "-ccc-dynamic-driver". > > This patch addresses two points brought up during the driver BoF last > November, namely > * "There should be a 'driver database' of known platforms" > * "This should fall back for the unusual case: load from some sort of > config file (in JSON format)" > * "We should be able to ship a compiler that can always act like it's > targetting Ubuntu". > > Firstly, this first patch has some limitations: > * It has only been fully implemented for Linux, and only tested (to > exhaustion) on Ubuntu Natty and RHEL5. > * It only deals with what should be the "uncommon" case - loading JSON at > runtime. > * It doesn't yet copy the target DB into the correct place in the build or > install dirs. > > Secondly, this is what it does do: > * llvm.diff adds SMLoc tracking, raw MemoryBuffer input and '// ...' style > comment support to the JSON parser. This makes developing the target DB > files a lot easier, and the comment support is invaluable (and means we can > add the copyright header). > * Adds an implementation of the Target Database for linux, and minix (as > an example of a trivial platform). The database parser is completely > implemented, and a schema is implemented and described that should be > sufficient for everything we need, and also simple enough to grasp easily. > This has been at the expense of some terseness in the DB definition. > > The input to the target database is a JSON file. This JSON file can include > other files. The file consists of a list of lists. Each of those lists is a > "group" of objects. When queried, the targetdb will iterate over these > groups. For each group, all objects are iterated in order. If an object > "matches" the query criteria, its contents are added to the query result, > and no more objects are iterated over in that group. > > See lib/Driver/TargetDB_Linux.json for an example of how it works. A query > to the target database will result in a structure containing everything you > should need to compile/link/assemble on the target. The format of this > structure is derived from a tablegen file (the patch includes a new tablegen > backend), so there is no boilerplate if you want to add a new struct member. > > The patch has been tested by taking an indicative subset of all possible > Clang flags (especially interesting ones such as -static, -shared, -pie, -S > etc) and brute force running through the entire set of combinations of these > flags testing the targetdb-based driver's generated command lines against > the current one. > > The new patch adds a new command flag "-ccc-target-triple" to be > distinguished from -ccc-host-triple. (When this patch and its followups are > accepted and turned on by default, this will change into "-target"). This > way we can actually (finally!) test "compile targetting X as if you were on > Y", which should let us increase our driver test coverage (I also added > -ccc-linux-distro which allows you to pretend to be a specific distro, as > this is not encoded in the triple). > > Speaking of tests, the submitted patch does not have any yet. I intend to > submit them in a later patch, as I'd like this to be at least concept > approved before I spend an infinite amount of time writing a decent test > set. > > Heckling... commence! :-) >From dicsussions at http://llvm.org/bugs/show_bug.cgi?id=4127 it was suggested to not use target triple as an argument, but instead having something like '--target=configdb-entry-alias' which would define the corresponding triple. Using this flag, you will be able to use --target=linux_distro directly instead of having 2 arguments for this. What do you think about this ? -- Jean-Daniel _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
