aboutsummaryrefslogtreecommitdiff
path: root/gcc/function-tests.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2018-01-17 15:56:07 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2018-01-17 15:56:07 +0000
commitab612f39a4b756e3a58ec3cb36b4033f84825b9b (patch)
tree3bc9e71861a2599e6cb0a2ed6e26be602365e358 /gcc/function-tests.c
parentf0fbe57d54af9234f441f1332050ef36d0787653 (diff)
downloadgcc-ab612f39a4b756e3a58ec3cb36b4033f84825b9b.zip
gcc-ab612f39a4b756e3a58ec3cb36b4033f84825b9b.tar.gz
gcc-ab612f39a4b756e3a58ec3cb36b4033f84825b9b.tar.bz2
Fix failure building LLVM with location wrapper nodes (PR c++/83799)
PR c++/83799 reports a failure building LLVM due to a bogus "no matching function for call to" error at a callsite like this: TLI->getTypeLegalizationCost(DL); where "DL" is from: using TargetTransformInfoImplBase::DL; The root cause is that type_dependent_expression_p on a USING_DECL should return true when processing a template, but after r256448 the the argument at the callsite is a location wrapper around the USING_DECL, and type_dependent_expression_p erroneously returns false for it, as it is comparing tree codes, and failing a match, then looking at types. This prevents cp_parser_postfix_expression from using the "build_min_nt_call_vec" path for handling the call, instead erroneously handling it via build_new_method_call (which fails for this case). This patch fixes the problem by stripping any location wrappers before the various tree code tests in type_dependent_expression_p. It fixes the reduced test case, and the full BasicTargetTransformInfo.ii; after this patch, the assembly generated for that latter case is identical to that generated before r256448. gcc/cp/ChangeLog: PR c++/83799 * pt.c (type_dependent_expression_p): Strip any location wrapper before testing tree codes. (selftest::test_type_dependent_expression_p): New function. (selftest::cp_pt_c_tests): Call it. gcc/testsuite/ChangeLog: PR c++/83799 * g++.dg/wrappers/pr83799.C: New test case. From-SVN: r256796
Diffstat (limited to 'gcc/function-tests.c')
0 files changed, 0 insertions, 0 deletions