PR tree-optimization/82800 - Incorrect warning on "may be used uninitialized in variadic template code

gcc/testsuite/ChangeLog:
	PR tree-optimization/82800
	* g++.dg/warn/uninit-pr82800.C: New test.
This commit is contained in:
Martin Sebor 2021-04-13 14:53:26 -06:00
parent 8084ab15a3
commit af7128621e

View File

@ -0,0 +1,43 @@
/* PR 82800 - Incorrect warning on "may be used uninitialized in
variadic template code
{ dg-do compile { target c++11 } }
{ dg-options "-O2 -Wall" } */
typedef __SIZE_TYPE__ size_t;
extern "C" int rand ();
struct Maker
{
double makeConst()
{
return pick<double>(0, 0, 0, 0, 0, 0, 1); // { dg-bogus "uninitialized" }
}
template<typename T, typename... Args>
T pick(T first, Args... args)
{
return pickGivenNum<T>(rand(), first, args...);
}
template<typename T>
T pickGivenNum(size_t num, T first)
{
if (num != 0) __builtin_abort();
return first;
}
template<typename T, typename... Args>
T pickGivenNum(size_t num, T first, Args... args)
{
if (num == 0) return first;
return pickGivenNum<T>(num - 1, args...);
}
};
int main ()
{
Maker maker;
maker.makeConst();
maker.makeConst();
}