Commit Graph

27 Commits

Author SHA1 Message Date
Tareq A. Siraj 9c7750eeae Generate a unique filename for a given header
This patch is in preparation for writing the header replacement to disk.
Added getUniqueHeaderName() that generates a unique header filename in
the same directory as the header file.

Differential Revision: http://llvm-reviews.chandlerc.com/D1104

llvm-svn: 186007
2013-07-10 16:09:36 +00:00
Edwin Vane 86142e02df cpp11-migrate: Fixes for r185811
Some changes to r185811 broke certain build configurations. These changes should
fix them.

Author: Guillaume Papin <guillaume.papin@epitech.eu>
llvm-svn: 185814
2013-07-08 12:49:04 +00:00
Edwin Vane aae33677f5 cpp11-migrate: Tidying up
* Some file headers were missing for files in Core/
* Some headers were included but not necessary
* CMakeLists.txt was linking in LLVMSupport even though CMakeLists in subdirs
  were linking it in too.
* StringRefisation of constructors of types in FileOverrides.h
* Other misc cleanups

Author: Guillaume Papin <guillaume.papin@epitech.eu>
llvm-svn: 185811
2013-07-08 12:17:37 +00:00
Edwin Vane 17b31f3d43 cpp11-migrate: Minor command-line fixes and improvements
* all transforms are in the same category
* all transforms' options are in the same category
* display the CommonOptionParser extra-help (which describe in more details the
  compilation database stuff)
* add EXAMPLES section

Author: Guillaume Papin <guillaume.papin@epitech.eu>
llvm-svn: 185660
2013-07-04 17:49:59 +00:00
Rafael Espindola a3d1c02356 Don't use PathV1.h in PerfSupport.cpp.
llvm-svn: 184956
2013-06-26 15:22:42 +00:00
Edwin Vane 51a55d9964 cpp11-migrate: Really fixing doxygen warning
Last attempt at this fix was bogus.

llvm-svn: 184869
2013-06-25 19:01:18 +00:00
Edwin Vane e85ba57d6a cpp11-migrate: Fixing doxygen warning
llvm-svn: 184326
2013-06-19 17:38:56 +00:00
Edwin Vane b31df59109 cpp11-migrate: Fix parsing of '.' for header include/excludes
sys::fs::make_absolute was turning '.' into '<path>/.' which broke prefix
comparison logic. Stripping these extra chars fixes the problem.

llvm-svn: 184322
2013-06-19 17:17:31 +00:00
NAKAMURA Takumi cb873b1fc9 Prune "\param InitialState" since it has not been introduced. [-Wdocumentation]
llvm-svn: 184285
2013-06-19 06:58:29 +00:00
Edwin Vane ba6b32d1ce cpp11-migrate: Transforms honour header modification flag
Transforms will now make changes to headers if header modifications have been
enabled.

FIXME: Only UseNullptr contains a cursory header modification test. Other
transforms should have them too.

llvm-svn: 184197
2013-06-18 15:44:58 +00:00
Edwin Vane 62c013db6c cpp11-migrate: Transform now responsible for applying replacements
To make it possible for replacements made to headers as part of transforming
one translation unit to not be visible to the transform of other translation
units, Transform now handles replacement application as part of its
end-of-source handling. Several things were simplified as a result:

- The duplicated code in every transform for applying replacements is now gone
  and replaced with one location in Transform.
- RefactoringTool is no longer used since Transform houses the Replacements
  structure.
- RewriterContainer is now a private implementation detail of Transform (also
  renamed to RewriterManager since its behaviour is slightly different now with
  respect to lifetime of objects).
- There's now no distinction between input and output file state.

Misc notes:

- Interface changes reflected in unit tests.
- Replacements for files other than the main file are assumed to be for headers
  and stored as such.

llvm-svn: 184194
2013-06-18 15:31:01 +00:00
Edwin Vane 4e11abb59b cpp11-migrate: Transform now responsible for file content overriding
To better support per-translation unit replacements, any real work is being
moved out of ActionFactory and into Transform. In this revision, that means
file override application.

For simplification, Transform no longer inherits from SourceFileCallbacks.
TransformTest required updating as a result.

llvm-svn: 184098
2013-06-17 18:18:15 +00:00
Edwin Vane 230ecb2422 cpp11-migrate: const-correcting IncludeExcludeInfo
isFileIncluded() needed to be marked const.

llvm-svn: 183918
2013-06-13 17:19:37 +00:00
Edwin Vane 90706dd424 cpp11-migrate: Add headers to file override information
File override structures now contain per-source overrides for headers.

For now, modified headers are written to disk when the Migrator is done.
This is only temporary behaviour since we can expect headers to be
changed by migrating multiple source files. The changes need to be
merged after all migrations are complete.

llvm-svn: 183917
2013-06-13 17:17:32 +00:00
Edwin Vane e0a7d9ceff cpp11-migrate: Replace file override container
A more flexible container for storing overrides is required for headers. Before
a source goes through the transform pipeline, any headers it references will be
in their original state and unaffected by transforms applied to other sources.
Therefore overrides for headers need to be kept separate for each source file.

This patch doesn't introduce support for storing header overrides yet. It only
replaces the existing structure and makes any necessary changes to support it.

llvm-svn: 183910
2013-06-13 16:00:46 +00:00
Edwin Vane 59175a1523 cpp11-migrate: Decluttering Transform.h
Moving RewriteContainer's constructor impl to Transform.cpp to reduce clutter.
More things will soon be added to this header.

llvm-svn: 183856
2013-06-12 19:58:21 +00:00
Edwin Vane a6bbcdd707 cpp11-migrate: New mechanism for overriding file contents
Next step toward supporting migrating headers. Instead of using ClangTool's
ability to override all files at once, use a custom FrontendAction and override
only the source (and eventually headers) the action is about to parse.

Use of newFrontendActionFactory() is replaced with a new factory maker provided
by Transform.

llvm-svn: 183855
2013-06-12 19:52:13 +00:00
Rafael Espindola f5efb087d3 Fix build after clang change r183781.
llvm-svn: 183784
2013-06-11 20:12:07 +00:00
Edwin Vane 622dacd669 cpp11-migrate: Add EnableHeaderModification flag
First step toward supporting header modifications: adding a flag that turns on
such modifications. Eventually header modifications will be on by default but
until all the kinks can be worked out, they must be explicitly enabled.

llvm-svn: 183444
2013-06-06 20:32:29 +00:00
Edwin Vane 32e3553f83 cpp11-migrate: Refactor how global options are passed to Transforms
Refactored how global options are passed to Transforms to avoid widespread
changes every time a new global option is added.

Tests updated to reflect new interface.

llvm-svn: 183443
2013-06-06 20:31:52 +00:00
Edwin Vane 96f51713ef cpp11-migrate: Eliminate windows line endings
r183274 accidentally added windows line endings to changed lines. Changing them
back.

llvm-svn: 183322
2013-06-05 16:39:24 +00:00
Edwin Vane db7a52a6e7 cpp11-migrate: collect performance timers per source file
Performance timers captured in each transform for all files they process are now collected and arranged per source file in preparation for writing to disk.

This revision is the last piece of the initial implementation of performance timer capturing.

llvm-svn: 183274
2013-06-04 22:37:02 +00:00
Edwin Vane b76a13eb4e cpp11-migrate: Transforms collect timing data.
Using updated form of newFrontendActionFactory(), Transforms now automatically
measure, if requested, how long it takes to apply a MatchFinder to a source
file. Other per-transform overhead, e.g. applying replacements, is not
currently measured. This behaviour is disabled for now and soon will be
connected to a new command line arg.

llvm-svn: 182942
2013-05-30 17:48:11 +00:00
Edwin Vane c049c92933 Add support to read include/exclude paths from file
Files containing the list of paths to be included and excluded can now be
specified through -include-from=<filename> and -exclude-from=<filename> command
line options in cpp11-migrate.

Added support for data files for cpp11-migrate unittests. The Cpp11MigrateTests
executable just requires a DATADIR environment variable to be set which
specifies the directory where data files are stored. This is handled
automatically when using LIT.

Author: Jack Yang <jack.yang@intel.com>, Edwin Vane <edwin.vane@intel.com>
llvm-svn: 180939
2013-05-02 19:02:02 +00:00
Edwin Vane 83a38b5c15 Adding support for -include/-exclude to cpp11-migrate
This commit adds initial support for the -include/-exclude options which are
both currently marked as hidden. This support is the first step toward
supporting transformations in headers included from source files.

Added unittests to test include/exclude support.

Author: Jack Yang <jack.yang@intel.com>
llvm-svn: 179528
2013-04-15 14:50:35 +00:00
Edwin Vane 6b191b0195 Fix symbol dependency errors introduced with libmigrateCore
With cpp11-migrate core functionality moved to a separate library (for enabling
unit tests) this library contained code that referenced symbols that are still
in the main binary. On some platforms, the shared library build broke as a
result. This revision fixes the dependency problem and is safe for the eventual
lib-ification of the transforms as well.

llvm-svn: 178901
2013-04-05 19:18:13 +00:00
Edwin Vane 8581648838 lib-ified core cpp11-migrate functionality to support unit tests
Summary:
Transform.* and Transforms.* moved to form a new library: libmigrateCore.
#includes updated to point to new header locations.

To support autoconf build, Cpp11Migrate.cpp moved to new subdirectory 'tool'
which also contains build files for creating final binary.

CMake and autoconf updated to build the new library and link it with
cpp11-migrate and with cpp11-migrate unit tests.

Dummy unit tests replaced with simple, but real, tests for Transform's public
interface.

TODO: Lib-ifying the transforms to further simplify build of cpp11-migrate.
llvm-svn: 178785
2013-04-04 20:19:58 +00:00