Skip to content
Snippets Groups Projects
Commit aac5c57e authored by Jan Hubicka's avatar Jan Hubicka
Browse files

Add __builtion_unreachable to vector::size(), vector::capacity()

This patch makes it clear that vector sizes and capacities are not
negative.  With recent change to ipa-fnsummary this should not affect
inlining and improves codegen of some vector manipulation functions.

I tested clang build.  Looking for throw_bad calls there are only 3
called considerably often (bad_allloc, bad_array_new_length and
function_callv).
The patch seems to reduce bad_alloc and bad_array_new_length calls
considerably:

bad_alloc 380->147
bad_array_new_length 832->128

libstdc++-v3/ChangeLog:

	PR tree-optimization/109442
	* include/bits/stl_vector.h: (vector::size(),
	vector::capacity()): Add __builtin_unreachable call to announce
	that size and capacity are non-negative.

gcc/testsuite/ChangeLog:

	PR tree-optimization/109442
	* g++.dg/tree-ssa/pr109442.C: New test.
parent a649efea
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment