Skip to content
  1. Mar 25, 2013
  2. Mar 19, 2013
    • Edwin Vane's avatar
      Don't replace macro usage if macro body has NULL · c383960b
      Edwin Vane authored
      In case of macro body expansion, check to see if the macro is named NULL and
      don't replace inside the macro body. This fixes the case when NULL appears
      inside the macro body and the transform replaces the usage of the macro with
      nullptr. This is an easy fix for the problem for now and we should analyze the
      macro body to see if it expands to only NullToPointer in the future for a more
      robust solution that takes care of user defined macros that behaves like NULL.
      
      Other changes:
      - Moved complex macro tests to macros.cpp
      - Added new test cases.
      - Added checks to make sure that the macro bodies are not modified by the tool.
      
      Fixes: PR15396
      
      Author: Tareq A Siraj <tareq.a.siraj@intel.com>
      llvm-svn: 177422
      c383960b
  3. Mar 15, 2013
    • Edwin Vane's avatar
      Don't include outer-most explicit cast in nullptr replacement · 2032fb97
      Edwin Vane authored
      The outer-most explicit cast is now left alone by the Use-Nullptr transform to
      maintain the type of the expression and avoid introducing ambiguities.
      
      Fixes PR15395.
      
      Author: Ariel J Bernal <ariel.j.bernal@intel.com>
      llvm-svn: 177179
      2032fb97
    • Edwin Vane's avatar
      Prevent nullptr_t-typed exprs from being replaced · 52c326ec
      Edwin Vane authored
      The Use-Nullptr transform was replacing nullptr_t-typed expressions because in
      the AST such expressions have an implicit NullToPointer cast around them. Now
      the transform ignores these expressions.
      
      Fixes PR15414.
      
      llvm-svn: 177168
      52c326ec
  4. Mar 08, 2013
    • Edwin Vane's avatar
      Turned no_xform into a pass from expected failure. · c016c0da
      Edwin Vane authored
      Since no_xform is not a bug to be fixed, made the test pass using the 'not'
      utility and removed XFAIL.
      
      llvm-svn: 176709
      c016c0da
    • Edwin Vane's avatar
      Extend loop variable naming checks · 3606f550
      Edwin Vane authored
      The loop convert tests for conflicting names have been extended to check for
      macro names, types, and language keywords including language extensions. Tests
      have also been added.
      
      Fixes PR15322
      
      Author: Jack Yang <jack.yang@intel.com>
      Reviewer: gribozavr, klimek, revane
      llvm-svn: 176690
      3606f550
  5. Mar 07, 2013
    • Edwin Vane's avatar
      Have LoopConvert use 'auto &&' where necessary · 4f05d714
      Edwin Vane authored
      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
      4f05d714
    • Chandler Carruth's avatar
      Switch from autogenerating tests to using the preprocessor. · 074a3568
      Chandler Carruth authored
      NOTE: You may need to run 'make clean' or 'ninja -t clean' etc!!! This
            is due to really nasty bug/interactions between
            CMake/configure/make/Ninja/LIT...
      
      This commit tries to back out the support for generating test cases as
      part of the build system due to the issues I brought up in post-commit
      review:
      
      1) It adds a *lot* of complexity and fragility to the build system. See
         the number of commits required to try to get all the bots happy.
      2) It isn't really necessary -- we can already run scripts to generate
         things with the RUN lines of a test.
      3) It makes the tests somewhat harder to debug as they cross between
         more domains.
      4) In almost all cases it isn't really needed or it can be done directly
         using the preprocessor.
      
      I should have been more proactive reviewing this, and I'm really sorry
      about the churn here. =/ To help keep track of what commits are going
      where, this backs out most of the non-test-changes from these revisions:
        r176397
        r176373
        r176293
        r176184
        r175744
        r175624
        r175545
        r175544
      
      There were several trivial or cleanup changes to the lit files or other
      files. Some of these looked ok, but I didn't try to tease them apart...
      Edwin, if you know what to look for, please carry on with the cleanups
      there, and sorry for hosing stuff here but I'm not much of a Python
      person, and so I was erring on the side of cautiously backing out the
      change.
      
      I've tried to preserve the test changes everywhere I could, but review
      is appreciated here in case I missed some.
      
      I then re-wrote the tests to use the preprocessor rather than python to
      expand to the various bits of code. The nicest part of this is that now
      all the files are just C++ code. They edit and behave like C++ code,
      etc. RUN lines with different -D flags are used to run the same test
      over multiple different configurations, and includes bracketed in
      special defines are used to flesh out a collection of standard interface
      stubs to test interactions between pieces. These probably aren't perfect
      yet, but I think its an improvement (at least in terms of build system
      complexity) and will hopefully be a useful demonstration of the
      technique I prefer for these types of tests.
      
      llvm-svn: 176627
      074a3568
  6. Mar 06, 2013
    • Stefanus Du Toit's avatar
      Test case for PR-15414 - nullptr_t functions · 49fe6388
      Stefanus Du Toit authored
         
      The use-null-ptr transform will transform calls to functions that return a
      nullptr_t. Even if the function were to only return a null pointer and do
      nothing else, this replacement would still be undesired as the behavior and
      signature of the function could change in the future.
      
      This adds an XFAILed test case to demonstrate the issue.
      
      Reviewed by: Edwin Vane, Tareq Siraj
      
      llvm-svn: 176553
      49fe6388
    • Edwin Vane's avatar
      Fixed Use-Nullptr when replacing return(0) · 105963d1
      Edwin Vane authored
      Before fix, the paren expression was being replaced resulting in returnnullptr.
      ParenExpr and implicit casts now ignored so we get return(nullptr) instead.
      
      Added new test cases.
      
      Fixes PR15398
      
      Author: Ariel Bernal <ariel.j.bernal@intel.com>
      llvm-svn: 176551
      105963d1
  7. Mar 04, 2013
  8. Mar 02, 2013
  9. Mar 01, 2013
    • Edwin Vane's avatar
      Avoid parallelism problems generating lit.site.cfgs · a98217a2
      Edwin Vane authored
      extra/test/cpp11-migrate/Makefile was using the same tmp file for generating
      lit.site.cfg for two different directories. Parallelism caused conflicts so now
      using differently named temp files.
      
      llvm-svn: 176379
      a98217a2
    • Edwin Vane's avatar
      Fix recursive make in clang-tools-extra · b1bb4c2d
      Edwin Vane authored
      Autoconf make (all) now properly recurses from tools/extra/Makefile into
      tools/extra/test/Makefile and tools/extra/test/cpp11-migrate/Makefile. The
      'all' target is responsible for creating lit config files and autogenerating
      tests. Subsequent 'check-all' targets will properly work.
      
      Re-enabling UseAuto/iterator.cpp test.
      
      General clean-up of clang-tools-extra makefiles; removing dead targets and
      removing duplicated pieces of llvm/Makefile.rules.
      
      llvm-svn: 176373
      b1bb4c2d
  10. Feb 28, 2013
    • Edwin Vane's avatar
      Don't use 'exit' in lit script · 4b807525
      Edwin Vane authored
      Some buildbots use a shell that doesn't know 'exit'. So instead of using XFAIL
      for UseAuto/iterator.cpp (since this problem doesn't exist for cmake) leave the
      'grep' command and turn off the others.
      
      llvm-svn: 176295
      4b807525
    • Edwin Vane's avatar
      Turning off UseAuto/iterator.cpp test until recursive make issue fixed · ca5a85fa
      Edwin Vane authored
          
      The way 'make check-all' causes configuration files to be generated results in
      the cpp11-migrate/Makefile not being triggered to generated any files. These
      files are necessary for UseAuto/iterator.cpp to run. Turning off this test
      until the problem is fixed properly.
      
      llvm-svn: 176293
      ca5a85fa
    • Edwin Vane's avatar
      Introducing Use-Auto transform for cpp11-migrate · 266b625c
      Edwin Vane authored
      The new Use-Auto transform replaces the type specifier for variable
      declarations with the special C++11 'auto' type specifier. For now, the
      replacement is done only for variables that are iterators of any of the
      std containers and only if the type used is one of those explicitly
      allowed by the standard (i.e. not an implementation-specific type).
      
      Reviewers: gribozavr, silvas, klimek
      llvm-svn: 176266
      266b625c
  11. Feb 27, 2013
    • Edwin Vane's avatar
      Custom lit.site.cfg configuration for cpp11-migrate · 24b4bb06
      Edwin Vane authored
      To afford hand-written tests access to any auto-generated headers, a
      lit.site.cfg is now created for cpp11-migrate's test directory providing a new
      config.substition. Tests can refer to %gen_root in the LIT script.
      
      Removed use of --param clang_site_config. Not necessary when running
      tests using the build system.
      
      llvm-svn: 176184
      24b4bb06
  12. Feb 21, 2013
    • Edwin Vane's avatar
      Fixing a "multiple rules generate X" warning from ninja · 12db04f8
      Edwin Vane authored
      CMake's Ninja generator was not detecting that test/lit.site.cfg.in and
      test/subdir/../lit.site.cfg.in were really the same file. Ninja noticed this
      and complained as both appeared as targets (for the missing file rule). Now
      canonicalizing the path to ensure the paths presented to CMake are identical
      and the duplication is now fixed.
      
      llvm-svn: 175744
      12db04f8
  13. Feb 20, 2013
  14. Feb 19, 2013
  15. Feb 17, 2013
    • Edwin Vane's avatar
      Fix -use-nullptr problems with assert() · 4ad00b46
      Edwin Vane authored
      If a cast expression (NullToPointer) is detected in a function-like macro
      parameter, we should use the spelling location instead of the expansion
      location. Using SourceManager::getFileLoc() fixes this problem.
      
      Also added testcases for this bug.
      
      Fixes: PR15279
      Author: Tareq A Siraj <tareq.a.siraj@intel.com>
      Reviewer: klimek
      llvm-svn: 175399
      4ad00b46
  16. Feb 07, 2013
    • Edwin Vane's avatar
      Fix for combined loop and nullptr convert tests · 37fea693
      Edwin Vane authored
      The rewriter was previously reading the content buffer from the file itself.
      Since we are now keeping the content in memory and writing to the file only
      once, the rewriter's buffer (from the file) was not in sync with the
      RefactoringTool's buffer. Adding an overrideFileContents call (similar to how
      Clang-format handles for this) will resolve this issue.
      
      Author: Jack Yang <jack.yang@intel.com>
      Reviewers: gribozavr, klimek
      llvm-svn: 174643
      37fea693
  17. Jan 25, 2013
  18. Jan 22, 2013
    • Edwin Vane's avatar
      Add use-nullptr transform to cpp11-migrate · 44c31459
      Edwin Vane authored
      This transform converts the usage of null pointer constants (e.g. NULL, 0,
      etc.) in legacy C++ code and converts them to use the new C++11 nullptr
      keyword.
      - Added use-nullptr transform.
      - Added C++11 support to the final syntax check. Used ArgumentAdjuster class to
        add -std=c++11 option to the command line options.
      - Added tests for use-nullptr transform.
      - Added tests that exercises both loop-convert and use-nullptr in the source
        file.
      
      TODO: There's a known bug when using both -loop-convert and -use-nullptr at the
            same time.
      
      Author: Tareq A Siraj <tareq.a.siraj@intel.com>
      Reviewers: klimek, gribozavr
      llvm-svn: 173178
      44c31459
  19. Jan 08, 2013
    • Edwin Vane's avatar
      Transferred loop-convert tests to cpp11-migrate · 31896624
      Edwin Vane authored
      - Turned off -count-only tests as they aren't supported in cpp11-migrate
        yet.
      - Updated tests to use new binary name and options to access
        loop-convert transform.
      - Fixed header guards to not use restricted names.
      
      Reviewers: klimek, gribozavr
      llvm-svn: 171852
      31896624
  20. Jan 04, 2013
    • Edwin Vane's avatar
      Port loop-convert into cpp11-migrate · dde168b8
      Edwin Vane authored
          
      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
      dde168b8
  21. Dec 12, 2012
    • Edwin Vane's avatar
      Initial commit for cpp11-migrate tool · 9bd2e1ba
      Edwin Vane authored
      - Added directory structures and build system files for the new tool.
      - Extremely basic implementation of tool performs only an initial syntax check.
      - Basic tests ensure syntax test works as expected.
      
      llvm-svn: 169983
      9bd2e1ba
Loading