Commit Graph

602 Commits

Author SHA1 Message Date
Danilo Piparo
a9160b6374 Fix tag lookup test 2018-09-24 09:58:50 +02:00
Danilo Piparo
f2b6205182 Remove fatal typo in tag lookup tests 2018-09-24 09:13:47 +02:00
Danilo Piparo
333bf59b14 Fix Tag test: the test failed because of a typo
the tag called "E" was looked for but its name tested against the
string "N"
2018-09-22 09:59:07 +02:00
Danilo Piparo
4d3fa7427b Add test for the Tag lookup helpers. 2018-09-22 09:14:48 +02:00
Vassil Vassilev
272905eced Implement clang plugin support.
Clang allows third party shared libraries to provide user-defined
extensions. For example, a custom libTemplateInstantiation.so can
visualize all template instantiation chains in clang. To enable it
one needs to pass a set of options such as -fplugin.

Cling should be able to inherently work with clang plugins. However,
cling still does not make full use of the clang driver where the plugin
setup is handled.

This patch enables plugins in cling and extends them in some aspects.
In particular, cling allows loading of plugins from shared libraries
but also if they are linked to the same library where cling is. This is
very useful in cases where cling runs itself in a shared library (eg
libCling). Users of libCling (such as ROOT) prefer to keep all llvm and
clang related symbols local to avoid symbol clashes if there is another
version of clang and llvm linked against a package. This can be done by
dlopen-ing libCling with RTLD_LOCAL visibility mode. Then the only way
for clang plugins to work in this scenario is to be linked to libCling.

Patch by Aleksandr Efremov and me.
2018-07-28 13:17:44 +02:00
Axel Naumann
5e0ff39cd8 Test printValue on unutterable types. 2018-06-27 08:45:21 +02:00
Simeon Ehrig
9a4418b3c0 Improvements for Pull Request #240
- little changes at comments and code style
- try to use const in IncrementalCUDADeviceCompiler, where is possible
- move CUDA device code compiler instance to IncrementalParser
- change the members of CuArgs to const and adjust the setCuArgs method
- use std::vector<string> instead llvm::Smallvector<const char *> to build argv for executeAndWait
- improve the error messages of generatePCH(), generatePTX() and generateFatbinary()
- replace m_Counter with a copy in IncrementalCUDADeviceCompiler to avoid involuntary changes
2018-06-25 08:29:07 +02:00
Simeon Ehrig
68cffbb853 Improve CUDA device code testcases. 2018-06-25 08:29:07 +02:00
Simeon Ehrig
50bc19f6b5 Add some complex cuda template kernel test cases. 2018-06-25 08:29:07 +02:00
Simeon Ehrig
2011246c17 Overwork CUDA device tests.
- add cudaDeviceSynchronize() at every kernel launch
- remove small address bug at cudaMemcpy, if host array is used
- in parallel test cases, replace fixes thread number with variable
- overworked shared memory kernel
2018-06-25 08:29:07 +02:00
Simeon Ehrig
e7b0e22ae8 Add test cases for CUDA features.
- CUDA __constant__ memory
- CUDA global __device__ memory
- CUDA __host__ prefix
- CUDA kernel launch with arguments
- CUDA templated kernels
- CUDA shared memory with dynamic runtime
- CUDA Streams
- test if CUDA device is available
2018-06-25 08:29:07 +02:00
Axel Naumann
673a1d63a4 cling PR 233 (#2038)
Add llvm module pass to generate unique cuda module ctor/dtor names.

This llvm module pass address the follow problem. Every llvm module has a cuda ctor and dtor (if a cuda fatbinary exist), with at least a function call to register the fatbinary. The ctor/dtor can also include function calls to register global functions and variables at runtime, depending on user's code. The lazy compilation detects functions by the name. If the name (symbol) already exists it uses the existing translation. Otherwise it translates the function on first use (but it never translates twice). Without the module pass, Cling will always use the translation of the first module.

The testcase use the reflection of the gCling interpreter object. It takes two random modules and compare the symbols of the cuda module ctor and dtor.

Also add function, which change the symbol of the cuda module ctor and dtor to preprocessor compliant symbols.
2018-05-18 11:14:07 +02:00
Axel Naumann
855d7224ae cling can now print lamda-dependent types! 2018-04-30 16:29:42 +02:00
Axel Naumann
e39e1baf94 Do not rely on value printer to side-#include <string>. 2018-04-30 16:29:42 +02:00
Vassil Vassilev
c2ce10091f Fix the expected fully qualified type. 2018-04-21 16:14:23 +02:00
Vassil Vassilev
4a226ee47a Desugar auto types allowing to print the full qualification of a type. 2018-04-19 17:59:08 +02:00
Vassil Vassilev
f70caf92b4 Check if targets exist and then add a dependency on them.
Fixes -Dclingtest=On; make check-cling.
2018-04-19 14:29:07 +02:00
Axel Naumann
febddd23bc Update test to follow new output. 2018-04-17 13:59:31 +02:00
Simeon Ehrig
3b656d1d3f add automatic load of libcudart.so at start of cling -xcuda 2018-03-23 18:29:07 +01:00
Simeon Ehrig
4f73d1b93d reduce arguments at start of cling -xcling
the argument --cuda-host-only and the default c++ stardard will be set at start of cling -xcuda
2018-03-23 18:29:07 +01:00
Vassil Vassilev
c2bda52ba2 The test is expected to fail on cling standalone. 2018-03-11 17:14:05 +01:00
Vassil Vassilev
7b70052776 Add forgotten to commit protection and check clause.
This should have landed in 7554be9571.
2018-03-10 10:29:05 +01:00
Vassil Vassilev
01dbb6d9d5 Use a stable way to determine the address of printed objects.
Using unary operator address of (eg. MyClass m; &m) takes into account
overloaded operators which may not give us the precide address of the
allocated storage.

This patch teaches cling to use std::addressof instead.
2018-03-08 22:44:16 +01:00
Vassil Vassilev
6eca8bd693 Revert "Silence cling test error until after the break."
This reverts commit 16b0a0b8bb2aa4415a9a40138b70406f4c2b6c20.

The error seems to be fixed but we forgot to update the test.
2018-03-08 22:44:15 +01:00
Vassil Vassilev
e9c073dbd0 Remove outdated and commented cmake arg. 2018-02-20 13:44:05 +01:00
Vassil Vassilev
53c9768f20 Remove redundant dependency 'count'. 2018-02-20 13:44:05 +01:00
Axel Naumann
b302a6bcfe Silence cling test error until after the break. 2017-12-21 10:48:27 +01:00
Axel Naumann
88edc07e65 Adjust after increased fp precision. 2017-12-05 15:40:37 +01:00
Axel Naumann
1ac9f65512 Update to new output format. Use CHECK-NEXT. 2017-12-05 15:40:37 +01:00
Axel Naumann
25849d68c4 Update ref to include <invalid memory address> 2017-12-05 15:40:37 +01:00
Axel Naumann
a662db9c4c Adapt to new=old value printer: "1.000000" for a double 1 instead of "1".
Revert "Adapt to format changes in floating point value printing."

This reverts commit a15ef54fb4c5152eeff740cc1f3be6249ede26e6.
2017-12-05 15:40:37 +01:00
Axel Naumann
315dfad70e Adapt to new default opt level.
As the default opt level decides which user-set opt levels cling will complain about, "control flow" changes were needed for the tests.
2017-11-07 19:44:33 +01:00
Axel Naumann
a9808afd40 Adapt to format changes in floating point value printing. 2017-11-07 19:44:33 +01:00
Vassil Vassilev
c912c9437d Switch back to O0.
We have a suboptimal behavior in the way cling optimizes code in O2 mode.
Disable it until the issue is understood and fixed.
2017-11-03 16:19:32 +01:00
Axel Naumann
9f6e4d0ba0 Add test for "Also recognize templates as identifier." 2017-09-13 18:38:18 +02:00
Philippe Canal
f715135d1c Don't clang-format cling test script.
Since the test script is not a fully compliant C++ file, clang-format can not
(be expected to) follow its unusual conventions/requirements.
2017-08-24 18:59:04 +02:00
Philippe Canal
6c368913e7 clang-format suggestion 2017-08-24 17:03:58 +02:00
Frederich Munch
38c4b902cf Fix registration of other atexit functions during an atexit handler. Recursive registration of atexit handlers is legal and should be handled, not ignored. 2017-08-24 17:03:58 +02:00
Frederich Munch
fb2e8fc7a4 Fixes for CERN-LLVM. 2017-07-15 10:14:38 +02:00
Frederich Munch
eba5ccd09a Update DeclCollectorPPAdapter to allow unloading of #undef command. 2017-07-15 10:14:38 +02:00
Roman Zulak
4a8d300bb1 When looking for the end of a block comment, really don’t bother with nesting. Finding the first end is good enough, the real parser can warn about any balancing issues. 2017-07-13 10:21:58 +02:00
Roman Zulak
6f5594ab4d Fix block comments greedily looking for the next asterisk. 2017-07-13 10:21:58 +02:00
Bertrand Bellenot
8720965ee5 Dont pass -fPIC flag on Windows (unsupported option) 2017-07-06 16:59:40 +02:00
Bertrand Bellenot
5947e13cb9 Don't run Gnu.C test on Windows... 2017-07-06 16:44:06 +02:00
Frederich Munch
cdf5c72f1d Fix tests on platforms with __float128 without forcing C++14.
This reverts commit c11224dce0.
2017-07-05 10:00:05 +02:00
Frederich Munch
aad084a75a UserInterface: cling is discarding the last line if it does not have a newline. 2017-07-04 15:29:09 +02:00
Axel Naumann
c11224dce0 Force -std=c++14 to enable __STRICT_ANSI__.
This removes __float128 warnings (enabled when building cling, disabled at runtime due to missing
support in clang) on MacOS with GCC.
2017-07-04 11:29:45 +02:00
Frederich Munch
4739761b89 Don’t clear GNUMode when user has specifically asked for it. There are uses that are valid even if the host compiled with _GLIBCXX_USE_FLOAT128. 2017-06-28 16:15:10 +02:00
Axel Naumann
6ec2c42b3c Reflect updated function name in error message. 2017-06-26 17:44:07 +02:00
Axel Naumann
c283f26a8a Fix test to check the right thing. 2017-06-26 17:44:07 +02:00