[Bug middle-end/98525] New: potential error in expand_call_inline error handling
bernd.edlinger at hotmail dot de
gcc-bugzilla@gcc.gnu.org
Tue Jan 5 09:44:43 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98525
Bug ID: 98525
Summary: potential error in expand_call_inline error handling
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: bernd.edlinger at hotmail dot de
Target Milestone: ---
The error handling in the following if-statement is possibly broken
tree-inline.c:
/* If callee is thunk, all we need is to adjust the THIS pointer
and redirect to function being thunked. */
if (id->src_node->thunk)
{
...
expand_call_inline (bb, stmt, id, to_purge);
maybe_remove_unused_call_args (cfun, stmt);
return true;
}
The return value of the recursive expand_call_inline
is ignored, and instead we always return true here.
BUT the inline function is not always successfully
expanded here.
At least in the following test cases, the expansion of the
inline call fails, but it is unclear if the IL is already modified
in preparation of a successful inlining:
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++98 (internal compiler error)
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++98 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-5.C -std=gnu++98 compilation failed to produce
executable
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++14 (internal compiler error)
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++14 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-5.C -std=gnu++14 compilation failed to produce
executable
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++17 (internal compiler error)
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++17 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-5.C -std=gnu++17 compilation failed to produce
executable
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++2a (internal compiler error)
+FAIL: g++.dg/ipa/devirt-5.C -std=gnu++2a (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-5.C -std=gnu++2a compilation failed to produce
executable
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++98 (internal compiler error)
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++98 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-c-4.C -std=gnu++98 compilation failed to
produce executable
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++14 (internal compiler error)
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++14 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-c-4.C -std=gnu++14 compilation failed to
produce executable
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++17 (internal compiler error)
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++17 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-c-4.C -std=gnu++17 compilation failed to
produce executable
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++2a (internal compiler error)
+FAIL: g++.dg/ipa/devirt-c-4.C -std=gnu++2a (test for excess errors)
+UNRESOLVED: g++.dg/ipa/devirt-c-4.C -std=gnu++2a compilation failed to
produce executable
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++98 (internal compiler error)
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++98 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/imm-devirt-2.C -std=gnu++98 compilation failed to
produce executable
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++14 (internal compiler error)
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++14 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/imm-devirt-2.C -std=gnu++14 compilation failed to
produce executable
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++17 (internal compiler error)
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++17 (test for excess errors)
+UNRESOLVED: g++.dg/ipa/imm-devirt-2.C -std=gnu++17 compilation failed to
produce executable
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++2a (internal compiler error)
+FAIL: g++.dg/ipa/imm-devirt-2.C -std=gnu++2a (test for excess errors)
+UNRESOLVED: g++.dg/ipa/imm-devirt-2.C -std=gnu++2a compilation failed to
produce executable
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++98 (internal compiler error)
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++98 (test for excess errors)
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++14 (internal compiler error)
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++14 (test for excess errors)
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++17 (internal compiler error)
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++17 (test for excess errors)
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++2a (internal compiler error)
+FAIL: g++.dg/ipa/pr71146.C -std=gnu++2a (test for excess errors)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++98 (internal compiler error)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++98 (test for excess errors)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++14 (internal compiler error)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++14 (test for excess errors)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++17 (internal compiler error)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++17 (test for excess errors)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++2a (internal compiler error)
+FAIL: g++.dg/ipa/pr79776.C -std=gnu++2a (test for excess errors)
+FAIL: g++.dg/ipa/pr85421.C (internal compiler error)
+FAIL: g++.dg/ipa/pr85421.C (test for excess errors)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++98 (internal compiler error)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++98 (test for excess errors)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++14 (internal compiler error)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++14 (test for excess errors)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++17 (internal compiler error)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++17 (test for excess errors)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++2a (internal compiler error)
+FAIL: g++.dg/ipa/pr91969.C -std=gnu++2a (test for excess errors)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++98 (internal compiler error)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++98 (test for excess errors)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++14 (internal compiler error)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++14 (test for excess errors)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++17 (internal compiler error)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++17 (test for excess errors)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++2a (internal compiler error)
+FAIL: g++.dg/ipa/pr92454.C -std=gnu++2a (test for excess errors)
FAIL: g++.dg/guality/pr55665.C -O2 -flto -fno-use-linker-plugin
-flto-partition=none line 23 p == 40
+FAIL: g++.dg/lto/devirt-5 cp_lto_devirt-5_0.o-cp_lto_devirt-5_0.o link, -O3
-fno-early-inlining -fno-inline -fdump-ipa-cp -fdump-tree-optimized -flto
(internal compiler error)
More information about the Gcc-bugs
mailing list