// RUN: %clang_analyze_cc1 -triple x86_64-unknown-unknown -verify %s \
// RUN: -analyzer-checker=core,debug.ExprInspection
template<typename T>voidclang_analyzer_dump(T);__attribute__((always_inline))staticinlineconstexprunsignedint_castf32_u32(float__A){return__builtin_bit_cast(unsignedint, __A);// no-warning
}voidtest(inti){_castf32_u32(42);float f =42;// Loading from a floating point value results in unknown,
// which later materializes as a conjured value.
auto g =__builtin_bit_cast(unsignedint, f);clang_analyzer_dump(g);// expected-warning-re@-1 {{{{^conj_\$[0-9]+{unsigned int,}}}}
auto g2 =__builtin_bit_cast(unsignedint,42.0f);clang_analyzer_dump(g2);// expected-warning-re@-1 {{{{^conj_\$[0-9]+{unsigned int,}}}}
auto g3 =__builtin_bit_cast(unsignedint, i);clang_analyzer_dump(g3);// expected-warning-re@-1 {{{{^reg_\$[0-9]+<int i>}}}}
auto g4 =__builtin_bit_cast(unsignedlong,&i);clang_analyzer_dump(g4);// expected-warning@-1 {{&i [as 64 bit integer]}}
}