287 Commits

Author SHA1 Message Date
Daniel Marjamäki
3798feecad TemplateSimplifier : Remove 'class|struct' in template arguments 2018-11-02 14:49:40 +01:00
Daniel Marjamäki
8beb42cc90 astyle formatting
[ci skip]
2018-10-28 17:37:19 +01:00
Paul Fultz II
f5811c6818 Fix issue 8732: Syntax error when using enable_if ()
* Fix issue 8732: Syntax error when using enable_if

* Fix FPs

* Use simpleMatch
2018-10-28 17:16:31 +01:00
IOBYTE
adbbadec7f Fixed (template simplifier: wrong simpifications for namespaces) () 2018-10-26 14:20:13 +02:00
IOBYTE
ea4e6a60f7 Fix template simplifier from deleting the same declaration multiple times ()
Found by running valgrind on testrunner. May fix .
2018-10-24 19:32:37 +02:00
IOBYTE
0763fdbfad Copy template default argument values from forward declaration to declaration. ()
It is possible to define default template parameter values in forward
declarations and not define any in the actual declaration.  Cppcheck
ignores forward declarations and only uses the default values in the
actual declaration so default values in forward declarations are copied
to the actual declaration when necessary.
2018-10-24 14:38:59 +02:00
IOBYTE
290563b964 Fix specialized template regression. ()
* Fix specialized template regression.

Only check for instantiation of template being processed rather than
count of all instantiations.

* Add 2 more tests.
2018-10-15 19:35:26 +02:00
IOBYTE
0a30768b59 Fixed (Template specialization: Constructor detected as normal … ()
* Fixed  (Template specialization: Constructor detected as normal function (functionStatic error))

Refactor template simplifier to remove the existing full specialization
function expandSpecialized and allow full specializations to use the
existing function expandTemplate.  The function expandTemplate was
modified to either expand the template like it originally did by copying
it or to modify the template in place.  Both instantiated and
uninstantiated full specializations are modified in place.  This also
fixes  and probably other related tickets as well.

The function simplifyTemplates now tries twice to simplify templates so
more templates can be simplified.  We should try as many times as
necessary to find all possible templates.  We can't do that now because
uninstantiated templates are left unchanged.  It is relatively straight
forward to have the new code also expand in place uninstantiated
templates with their symbolic types but namespaces are not handled
properly (ticket ) and it would introduce regressions.

* Fix travis warnings.
2018-10-14 16:57:07 +02:00
IOBYTE
33b74a04ab Add union support to template simplifier. () 2018-09-26 06:23:12 +02:00
orbitcowboy
d08b39c915
Improved const correctness of local variables. There are no functional changes intended. () 2018-09-23 20:24:51 +02:00
IOBYTE
e9a44f70b2 Remove out of line member functions of instantiated template classes. ()
* Remove out of line member functions of instantiated template classes.
2018-09-14 14:16:34 +02:00
IOBYTE
7224ee27d9 Fixed (simplifyTemplates: constructor outside template class not simplified properly) () 2018-09-02 17:49:13 +02:00
IOBYTE
341dee4a07 Fixed (Template out of line function return type missing when instantiated.) () 2018-09-02 08:35:05 +02:00
IOBYTE
508e8c234b Fixed (Using deleted token with multiple template instantiations.) ()
* Fixed  (Using deleted token with multiple template instantiations.)

* Fixed  (heap use after free: templatesimplifier)

* Add a flag to Token indicating that it has a pointer to it.

* Run dmake

* Fix one source of list pointers to deleted tokens.

Refactor TemplateSimplifier class to get access to template lists.
Remove many function parameters now that they are class variables.
Fix one source of list pointers to deleted tokens.
Add tests with no output to catch crashes.

* Run dmake again.

* Make 2 more functions private.

* Make requested changes.

* Missed one change request.

* Use TokenList rather than Tokenizer.

* Move TokenAndName constructor to cpp file so token.h is not needed in header file.
2018-09-01 11:26:10 +02:00
Daniel Marjamäki
faea8e1c02 Refactoring: Use range for loops 2018-07-15 14:45:15 +02:00
Daniel Marjamäki
9717a5afad Rename private member variables 2018-06-17 19:24:40 +02:00
Daniel Marjamäki
ef534c2d0d Renamed _codeWithTemplates 2018-06-16 22:03:04 +02:00
Daniel Marjamäki
79ffe1d4fc Rename _tokenizer, _settings, _errorLogger 2018-06-16 16:10:28 +02:00
rebnridgway
d3b231214d TemplateSimplifier optimisation. measured time improvement for cryptopp/test.cpp is ~8.4s => ~8.35s 2018-06-02 13:49:14 +02:00
Daniel Marjamäki
7163210f72 Fixed (Segmentation fault below TemplateSimplifier::simplifyCalculations) 2018-06-01 23:03:53 +02:00
Daniel Marjamäki
02f9ab38b4 simplifyCalculations: Made this function ~30% faster when analysing lib/tokenize.cpp 2018-05-31 06:36:59 +02:00
amai2012
8d55d361ae Template default parameter without name yields syntax error 2018-05-30 17:09:31 +02:00
Daniel Marjamäki
4c9bde277a Refactoring: Use ranged for in TemplateSimplifier 2018-05-30 14:40:38 +02:00
Daniel Marjamäki
f7148cbaa9 Refactoring: Renamed iterator 2018-05-30 14:33:55 +02:00
Daniel Marjamäki
cc77a6aa62 Code refactoring 2018-05-29 22:41:37 +02:00
orbitcowboy
5861a3844a Running astyle [ci skip]. 2018-05-29 17:32:55 +02:00
orbitcowboy
de66eedd54 Improved const correctness of local variables. 2018-05-29 17:33:43 +02:00
IOBYTE
d567b878ba Fix template instantialion failure for qualified template type. () 2018-05-16 15:24:23 +02:00
Daniel Marjamäki
d8622ea5f8 simplifyCalculations: Removed redundant goback variable 2018-05-14 23:06:10 +02:00
Daniel Marjamäki
29dc42ff67 Removed unreachable code 2018-05-14 22:50:30 +02:00
Daniel Marjamäki
98e3f373e9 Revert "Optimize usage of TemplateSimplifier::simplifyCalculations"
This reverts commit 3044612fe9b13fa6e3c9c190dd964c5c8fe237f0.

I got a report about a significant slowdown for a code.
2018-05-11 21:26:28 +02:00
Daniel Marjamäki
3044612fe9 Optimize usage of TemplateSimplifier::simplifyCalculations 2018-05-11 14:48:59 +02:00
Daniel Marjamäki
f336c2efe7 Refactoring; Renamed Scope::classStart and Scope::classEnd 2018-04-27 22:36:30 +02:00
PKEuS
d2146844dd Refactorizations:
- Replace several push_back-calls by emplace_back
- Replace some x = x.substr(0, y) calls by x.erase(y)
2018-04-11 09:44:35 +02:00
jrp2014
b6504c70ca Improve constness 2018-04-04 21:51:31 +02:00
orbitcowboy
ec0cc4e29c templatesimplifier: Removed redundant local string variable. () 2018-01-20 22:26:48 +01:00
Daniel Marjamäki
b08c1868bc Fixed Cppcheck warning 2018-01-15 22:03:23 +01:00
Daniel Marjamäki
c4caee6b18 Updated copyright year 2018-01-14 15:37:52 +01:00
Daniel Marjamäki
bbeff99cc3 Fixed (Token: need function that says if the token comes from instantiated template argument) 2018-01-11 09:41:22 +01:00
Daniel Marjamäki
8c33a95b49 Refactoring: moved method from Tokenizer to TokenList 2018-01-07 14:07:34 +01:00
Daniel Marjamäki
98b45ffbc0 Fixed (TemplateSimplifer crash) 2018-01-06 15:16:03 +01:00
Daniel Marjamäki
943693acfb TemplateSimplifier: Improved code for template aliases 2018-01-06 08:40:06 +01:00
Martin Ettl
e33fe91b1a Micro optimize std::string::find() calls searching for a single space. 2018-01-05 22:24:28 +01:00
Daniel Marjamäki
d6dae27803 Fixed Cppcheck postincrement warnings 2018-01-05 17:29:40 +01:00
Daniel Marjamäki
2c5225af43 Fixed use-after-free found by asan 2018-01-05 17:06:02 +01:00
Daniel Marjamäki
04c57381ea Fixed (heap use after free: templatesimplifier) 2018-01-05 16:10:13 +01:00
Matthias Krüger
94790620d6 templatesimplifier: fix two warnings about nonexplicit constructors.
Was:
[lib/templatesimplifier.cpp:37]: (style) Class 'FindToken' has a constructor with 1 argument that is not explicit.
[lib/templatesimplifier.cpp:47]: (style) Class 'FindName' has a constructor with 1 argument that is not explicit.
2018-01-05 15:53:13 +01:00
Daniel Marjamäki
f74c19bbed Refactoring lookups in TemplateSimplifier 2018-01-05 15:27:43 +01:00
Daniel Marjamäki
a95108ebe3 TemplateSimplifier: Fix incorrect recursion when template is reused inside itself 2018-01-03 23:05:57 +01:00
Dmitry-Me
70817b3d4e Remove redundant check 2018-01-01 03:06:17 +03:00