Commit Graph

5 Commits

Author SHA1 Message Date
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 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
Edwin Vane 4f05d7143f Have LoopConvert use 'auto &&' where necessary
For iterators where the dereference operator returns by value, LoopConvert
should use 'auto &&' in the range-based for loop expression.

If the dereference operator returns an rvalue reference, this is deemed too
strange and the for loop is not converted.

Moved test case from iterator_failing.cpp to iterator.cpp and added extra
tests.

Fixes PR15437.

Reviewer: gribozavr
llvm-svn: 176631
2013-03-07 16:22:05 +00:00
Edwin Vane dde168b8b5 Port loop-convert into cpp11-migrate
Took existing code from loop-convert tool and made it into a cpp11-migrate
transform. Pattern now set for having transform code in subdirectories. Related
changes:
- Makefile and CMakeLists.txt updated to support source files in
  subdirectories.
- At least one transform must be specified. syntax-only tests removed to
  reflect this.
- TODO: port over loop-convert tests.

Reviewers: klimek, silvas
llvm-svn: 171481
2013-01-04 18:25:18 +00:00