&& (dependent_type_p (TREE_TYPE (t))
|| !COMPLETE_TYPE_P (TREE_TYPE (t))
|| literal_type_p (TREE_TYPE (t)))
- && TREE_OPERAND (t, 0))
- {
- tree type = TREE_TYPE (TREE_OPERAND (t, 0));
+ && TREE_OPERAND (t, 0)
+ && (TREE_CODE (t) != CAST_EXPR
+ || !TREE_CHAIN (TREE_OPERAND (t, 0))))
+ {
+ tree from = TREE_OPERAND (t, 0);
+ if (TREE_CODE (t) == CAST_EXPR)
+ from = TREE_VALUE (from);
+ tree type = TREE_TYPE (from);
/* If this is a dependent type, it could end up being a class
with conversions. */
if (type == NULL_TREE || WILDCARD_TYPE_P (type))