Commit Graph

208 Commits

Author SHA1 Message Date
John Thompson 26b567ae6a Fixed typo.
llvm-svn: 184347
2013-06-19 20:35:50 +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
Manuel Klimek 1a3dc8576e Fix a remove-cstr-calls test that fails checking of the produced code.
llvm-svn: 184314
2013-06-19 15:43:40 +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
John Thompson 54c83695f7 Fixed a typo and naming convention.
llvm-svn: 184221
2013-06-18 19:56:05 +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
Rafael Espindola f7d00ba592 Revert "sys::Path::GetCurrentDirectory has been removed. Use sys::fs::current_path."
This reverts commit r184004.

This test has some dependency on the behavior of the old function on windows. I
added it back to llvm for now.

llvm-svn: 184010
2013-06-14 21:44:06 +00:00
Rafael Espindola 584b0706b2 sys::Path::GetCurrentDirectory has been removed. Use sys::fs::current_path.
llvm-svn: 184004
2013-06-14 20:48:30 +00:00
Reid Kleckner e34930bf6f Add a dependency on LLVM's option library for clang-tools-extra
r183989 added a dependency on LLVMOption in clangFrontend.

llvm-svn: 183990
2013-06-14 17:34:04 +00:00
Rafael Espindola 5492d613f5 Force c++98 so this works on windows where c++11 is the default.
llvm-svn: 183983
2013-06-14 16:09:37 +00:00
Edwin Vane 8d28646db6 cpp11-migrate: Fixing section markup
Adhering to LLVM's ReST style for section markup.

llvm-svn: 183981
2013-06-14 15:14:20 +00:00
Sylvestre Ledru cda552b1ba Also install cpp11-migrate when built with cmake. Fixes bug #16296
llvm-svn: 183976
2013-06-14 11:25:50 +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 9c0a584c35 More build fixes.
llvm-svn: 183785
2013-06-11 20:24:32 +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 573ec4f1aa cpp11-migrate: Docs refresh
* Documented new command-line options.
* Moved usage to a new page.
  * Usage now split into general options and transform-related options.
* Main Migrator page now contains getting started and getting involved
  information.
  * Also included a JIRA issue collector button for logging bugs.

llvm-svn: 183417
2013-06-06 14:30:14 +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 130b9676b6 cpp11-migrate: turn off PID-based perf data filenames
Getting PIDs on Windows is broken. Proper fix is simple but requires testing so
just disabling PID-based file names for now.

llvm-svn: 183154
2013-06-03 21:14:24 +00:00
Ariel J. Bernal ea7cef0869 Add support for report execution times
-Added command line option -report-times to enable or disable the output. The
same option can be used to specify the output directory.
-Write timing data to a unique file in disk using json format.

llvm-svn: 183142
2013-06-03 18:44:31 +00:00
Edwin Vane 99f8042e74 cpp11-migrate: Add option to detect and use macros that expand to 'override'
Added a new option -override-macros which causes the, the add-override
transform to detect macros that expand to 'override' (like LLVM_OVERRIDE) and
use these macros instead of the override keyword directly.

llvm-svn: 183001
2013-05-31 13:20:24 +00:00
Bill Wendling fb372aefa5 Fix the build. Use proper names here.
llvm-svn: 182959
2013-05-30 20:30:06 +00:00
Edwin Vane 4b985e3fac Tweak autoconf link params to fix migrator build
llvm-svn: 182957
2013-05-30 19:39:39 +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
Ariel J. Bernal 1d66e366e9 Fix UseAuto replacing declaration lists with new expressions
UseAuto used to replace declarion lists with new expressons where some
variable were not initialized with new.
This fix checks that every DeclStmt has a VarDecl with an initializer and it
also ensures that all declarations have the same type.

Added tests for multiple declarations and for typedefs.

llvm-svn: 182736
2013-05-27 14:30:23 +00:00
Benjamin Kramer 3334ade851 Unbreak the build.
UseAutoActions.cpp:48:17: error: redefinition of 'E' with a different type.

llvm-svn: 182119
2013-05-17 16:26:21 +00:00
Ariel J. Bernal eba5189f9a Fix UseAuto replacing variable declaration lists containing non-initialized
variables.

UseAuto used to match initialized variable declarations independently of
whether they were defined in a declaration list or as a single declaration.
Now it matches declaration statements where every variable declaration is
initialized.

llvm-svn: 182114
2013-05-17 15:30:17 +00:00
Edwin Vane 799ad8e212 cpp11-migrate: Check for valid NULL macros from macro arg expansions
The recent improvement to the Use Nullptr Transform for macro arg
expansions wasn't testing that only allowed NULL macros used in macro
args can be transformed. This revision replaces a TODO to that effect.

Fixes PR15955.

llvm-svn: 182014
2013-05-16 14:55:05 +00:00
Edwin Vane 1373c5cd6d cpp11-migrate: Refactor NullptrActions
Several free functions related to macro arg testing are being moved into
CastSequenceVisitor to facilitate upcoming fix.

llvm-svn: 182013
2013-05-16 14:54:24 +00:00
Edwin Vane ba6a0960ea cpp11-migrate: Add override specifier before comments on inline methods
This commit fixes a "FIXME" in the add-override transform. ' override' was
misplaced when a comment was between the function body and the end of the
'prototype'.

It also remove duplicated check for the main file from the last commit (and
fixes the typo in the comment above).

Author: Guillaume Papin <guillaume.papin@epitech.eu>
llvm-svn: 181806
2013-05-14 17:34:12 +00:00
Edwin Vane b8c3875618 cpp11-migrate: Fix crash in AddOverride due to template instantiations
This patch fixes different issues:
- override is not added in template 'contexts' (this will be further improved
  to handle safe situations, a test for this has been written already)
- the main file is now checked before the modifications are applied
- override is not applied now when dealing with pure methods since it was
  misplaced (ignoring it isn't the perfect solution but it seems difficult to
  find the location just before the pure-specifier)

Fixes PR15827

Author: Guillaume Papin <guillaume.papin@epitech.eu>
llvm-svn: 181596
2013-05-10 14:04:58 +00:00
Edwin Vane b40bf83eab Transform for loops over pseudo-arrays only if begin/end members exist
For loops using pseudo-arrays, classes that can be used like arrays from
the Loop Convert Transform's point of view, should only get transformed
if the pseudo-array class has begin()/end() members for the
range-based for-loop to call.

Free versions of begin()/end() should also be allowed but this is an
enhancement for another revision.

llvm-svn: 181539
2013-05-09 20:03:52 +00:00
Ariel J. Bernal 3429028a81 Use 'auto const&' for iterators whose deref operator return a const var
This patch fixes PR15601.
- Added check for whether the loop variable and the initializer have the same
type.
- Added tests.

llvm-svn: 181528
2013-05-09 17:46:20 +00:00
Edwin Vane fa58b26a50 Stop LoopConvert removing DeclStmts from selection/iteration condition clauses
If the LoopConvert Transform detects an alias for the loop variable, it
attempts to use that name in the resulting range-based for loop while removing
the original DeclStmt for the variable. That removal produced bad code when the
declaration was in the condition of an if, switch, while, or for stmt. This
revision fixes the problem by simply replacing the declaration with a use of
the alias variable.

llvm-svn: 181242
2013-05-06 20:01:43 +00:00
Edwin Vane 10414112d1 Added comprehensive macro arg usage logic to Use-Nullptr Transform
If a NullTo(Member)Pointer cast results from a macro arg expansion, all uses of
the arg must result in such casts or else the macro arg cannot be replaced with
'nullptr' safely. This revision adds logic and tests to ensure the safety of
replacing macro args in the Use-Nullptr Transform.

Fixes: PR15816
llvm-svn: 181221
2013-05-06 17:27:02 +00:00
Edwin Vane 9924de1b28 Generate input files from within unit test
It is preferable for a unit test to be responsible for creating its own input
data instead of relying on checked-in data files. Now the IncludeExcludeTest
for cpp11-migrate does this.

- Removed old data files.
- Updated build system and lit files to remove references to old data files.

llvm-svn: 181029
2013-05-03 16:30:55 +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
Ariel J. Bernal ea64c97fa9 Allow autotools to build and install cpp11-migrate
This patch fixes bug15793
cpp11-migrate was built but not installed (make install)
in the autotools build.

llvm-svn: 180721
2013-04-29 18:23:45 +00:00
Eric Christopher 6cddedca72 The option is spelled -use-auto, not -loop-convert.
llvm-svn: 180016
2013-04-22 14:39:46 +00:00
John Thompson a44f85abd4 Fixed outdate comment, and comment typo.
llvm-svn: 179568
2013-04-15 22:32:28 +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