[clang] d835dd4 - [analyzer] Produce SymbolCast symbols for integral types in SValBuilder::evalCast

Denys Petrov via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 18 06:08:13 PST 2022


Author: Denys Petrov
Date: 2022-01-18T16:08:04+02:00
New Revision: d835dd4cf5cc32bcc983c23eda60f7b016118dd3

URL: https://github.com/llvm/llvm-project/commit/d835dd4cf5cc32bcc983c23eda60f7b016118dd3
DIFF: https://github.com/llvm/llvm-project/commit/d835dd4cf5cc32bcc983c23eda60f7b016118dd3.diff

LOG: [analyzer] Produce SymbolCast symbols for integral types in SValBuilder::evalCast

Summary: Produce SymbolCast for integral types in `evalCast` function. Apply several simplification techniques while producing the symbols. Added a boolean option `handle-integral-cast-for-ranges` under `-analyzer-config` flag. Disabled the feature by default.

Differential Revision: https://reviews.llvm.org/D105340

Added: 
    clang/test/Analysis/produce-symbolcast_x64.cpp
    clang/test/Analysis/produce-symbolcast_x86.cpp

Modified: 
    clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
    clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
    clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
    clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
    clang/test/Analysis/analyzer-config.c

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def b/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
index c0cade46d614..7b976ddeaba2 100644
--- a/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
+++ b/clang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.def
@@ -320,6 +320,11 @@ ANALYZER_OPTION(bool, ShouldDisplayCheckerNameForText, "display-checker-name",
                 "Display the checker name for textual outputs",
                 true)
 
+ANALYZER_OPTION(bool, ShouldSupportSymbolicIntegerCasts,
+                "support-symbolic-integer-casts",
+                "Produce cast symbols for integral types.",
+                false)
+
 ANALYZER_OPTION(
     bool, ShouldConsiderSingleElementArraysAsFlexibleArrayMembers,
     "consider-single-element-arrays-as-flexible-array-members",

diff  --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
index 61dfdbb0688b..1df47dae25bf 100644
--- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
@@ -96,6 +96,17 @@ class SValBuilder {
                        QualType OriginalTy);
   SVal evalCastSubKind(nonloc::PointerToMember V, QualType CastTy,
                        QualType OriginalTy);
+  /// Reduce cast expression by removing redundant intermediate casts.
+  /// E.g.
+  /// - (char)(short)(int x) -> (char)(int x)
+  /// - (int)(int x) -> int x
+  ///
+  /// \param V -- SymbolVal, which pressumably contains SymbolCast or any symbol
+  /// that is applicable for cast operation.
+  /// \param CastTy -- QualType, which `V` shall be cast to.
+  /// \return SVal with simplified cast expression.
+  /// \note: Currently only support integral casts.
+  SVal simplifySymbolCast(nonloc::SymbolVal V, QualType CastTy);
 
 public:
   SValBuilder(llvm::BumpPtrAllocator &alloc, ASTContext &context,
@@ -103,18 +114,6 @@ class SValBuilder {
 
   virtual ~SValBuilder() = default;
 
-  bool haveSameType(const SymExpr *Sym1, const SymExpr *Sym2) {
-    return haveSameType(Sym1->getType(), Sym2->getType());
-  }
-
-  bool haveSameType(QualType Ty1, QualType Ty2) {
-    // FIXME: Remove the second disjunct when we support symbolic
-    // truncation/extension.
-    return (Context.getCanonicalType(Ty1) == Context.getCanonicalType(Ty2) ||
-            (Ty1->isIntegralOrEnumerationType() &&
-             Ty2->isIntegralOrEnumerationType()));
-  }
-
   SVal evalCast(SVal V, QualType CastTy, QualType OriginalTy);
 
   // Handles casts of type CK_IntegralCast.

diff  --git a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
index 637e4edfd778..302a971a15f2 100644
--- a/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
+++ b/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
@@ -416,7 +416,10 @@ void ExprEngine::VisitCast(const CastExpr *CastE, const Expr *Ex,
       case CK_IntegralCast: {
         // Delegate to SValBuilder to process.
         SVal V = state->getSVal(Ex, LCtx);
-        V = svalBuilder.evalIntegralCast(state, V, T, ExTy);
+        if (AMgr.options.ShouldSupportSymbolicIntegerCasts)
+          V = svalBuilder.evalCast(V, T, ExTy);
+        else
+          V = svalBuilder.evalIntegralCast(state, V, T, ExTy);
         state = state->BindExpr(CastE, LCtx, V);
         Bldr.generateNode(CastE, Pred, state);
         continue;

diff  --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 8edcef319088..bb3261bae3bf 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -980,15 +980,19 @@ SVal SValBuilder::evalCastSubKind(nonloc::SymbolVal V, QualType CastTy,
   } else {
     // Symbol to integer, float.
     QualType T = Context.getCanonicalType(SE->getType());
-    // If types are the same or both are integers, ignore the cast.
-    // FIXME: Remove this hack when we support symbolic truncation/extension.
-    // HACK: If both castTy and T are integers, ignore the cast.  This is
-    // not a permanent solution.  Eventually we want to precisely handle
-    // extension/truncation of symbolic integers.  This prevents us from losing
-    // precision when we assign 'x = y' and 'y' is symbolic and x and y are
-    // 
diff erent integer types.
-    if (haveSameType(T, CastTy))
-      return V;
+
+    // Produce SymbolCast if CastTy and T are 
diff erent integers.
+    // NOTE: In the end the type of SymbolCast shall be equal to CastTy.
+    if (T->isIntegralOrEnumerationType() &&
+        CastTy->isIntegralOrEnumerationType()) {
+      AnalyzerOptions &Opts =
+          StateMgr.getOwningEngine().getAnalysisManager().getAnalyzerOptions();
+      // If appropriate option is disabled, ignore the cast.
+      // NOTE: ShouldSupportSymbolicIntegerCasts is `false` by default.
+      if (!Opts.ShouldSupportSymbolicIntegerCasts)
+        return V;
+      return simplifySymbolCast(V, CastTy);
+    }
     if (!Loc::isLocType(CastTy))
       if (!IsUnknownOriginalType || !CastTy->isFloatingType() ||
           T->isFloatingType())
@@ -1004,3 +1008,75 @@ SVal SValBuilder::evalCastSubKind(nonloc::PointerToMember V, QualType CastTy,
   // Member pointer to whatever.
   return V;
 }
+
+SVal clang::ento::SValBuilder::simplifySymbolCast(nonloc::SymbolVal V,
+                                                  QualType CastTy) {
+  // We use seven conditions to recognize a simplification case.
+  // For the clarity let `CastTy` be `C`, SE->getType() - `T`, root type - `R`,
+  // prefix `u` for unsigned, `s` for signed, no prefix - any sign:
+  // E.g. (char)(short)(uint x)
+  //      ( sC )( sT  )( uR  x)
+  //
+  // C === R (the same type)
+  //  (char)(char x) -> (char x)
+  //  (long)(long x) -> (long x)
+  // Note: Comparisons operators below are for bit width.
+  // C == T
+  //  (short)(short)(int x) -> (short)(int x)
+  //  (int)(long)(char x) -> (int)(char x) (sizeof(long) == sizeof(int))
+  //  (long)(ullong)(char x) -> (long)(char x) (sizeof(long) == sizeof(ullong))
+  // C < T
+  //  (short)(int)(char x) -> (short)(char x)
+  //  (char)(int)(short x) -> (char)(short x)
+  //  (short)(int)(short x) -> (short x)
+  // C > T > uR
+  //  (int)(short)(uchar x) -> (int)(uchar x)
+  //  (uint)(short)(uchar x) -> (uint)(uchar x)
+  //  (int)(ushort)(uchar x) -> (int)(uchar x)
+  // C > sT > sR
+  //  (int)(short)(char x) -> (int)(char x)
+  //  (uint)(short)(char x) -> (uint)(char x)
+  // C > sT == sR
+  //  (int)(char)(char x) -> (int)(char x)
+  //  (uint)(short)(short x) -> (uint)(short x)
+  // C > uT == uR
+  //  (int)(uchar)(uchar x) -> (int)(uchar x)
+  //  (uint)(ushort)(ushort x) -> (uint)(ushort x)
+  //  (llong)(ulong)(uint x) -> (llong)(uint x) (sizeof(ulong) == sizeof(uint))
+
+  SymbolRef SE = V.getSymbol();
+  QualType T = Context.getCanonicalType(SE->getType());
+
+  if (T == CastTy)
+    return V;
+
+  if (!isa<SymbolCast>(SE))
+    return makeNonLoc(SE, T, CastTy);
+
+  SymbolRef RootSym = cast<SymbolCast>(SE)->getOperand();
+  QualType RT = RootSym->getType().getCanonicalType();
+
+  BasicValueFactory &BVF = getBasicValueFactory();
+  APSIntType CTy = BVF.getAPSIntType(CastTy);
+  APSIntType TTy = BVF.getAPSIntType(T);
+
+  const auto WC = CTy.getBitWidth();
+  const auto WT = TTy.getBitWidth();
+
+  if (WC <= WT) {
+    const bool isSameType = (RT == CastTy);
+    if (isSameType)
+      return nonloc::SymbolVal(RootSym);
+    return makeNonLoc(RootSym, RT, CastTy);
+  }
+
+  APSIntType RTy = BVF.getAPSIntType(RT);
+  const auto WR = RTy.getBitWidth();
+  const bool UT = TTy.isUnsigned();
+  const bool UR = RTy.isUnsigned();
+
+  if (((WT > WR) && (UR || !UT)) || ((WT == WR) && (UT == UR)))
+    return makeNonLoc(RootSym, RT, CastTy);
+
+  return makeNonLoc(SE, T, CastTy);
+}

diff  --git a/clang/test/Analysis/analyzer-config.c b/clang/test/Analysis/analyzer-config.c
index eae554ff8eef..a166b6f8c4a7 100644
--- a/clang/test/Analysis/analyzer-config.c
+++ b/clang/test/Analysis/analyzer-config.c
@@ -115,6 +115,7 @@
 // CHECK-NEXT: serialize-stats = false
 // CHECK-NEXT: silence-checkers = ""
 // CHECK-NEXT: stable-report-filename = false
+// CHECK-NEXT: support-symbolic-integer-casts = false
 // CHECK-NEXT: suppress-c++-stdlib = true
 // CHECK-NEXT: suppress-inlined-defensive-checks = true
 // CHECK-NEXT: suppress-null-return-paths = true

diff  --git a/clang/test/Analysis/produce-symbolcast_x64.cpp b/clang/test/Analysis/produce-symbolcast_x64.cpp
new file mode 100644
index 000000000000..d6f527621317
--- /dev/null
+++ b/clang/test/Analysis/produce-symbolcast_x64.cpp
@@ -0,0 +1,1640 @@
+// RUN: %clang_analyze_cc1 -triple x86_64-pc-linux-gnu -analyzer-checker=debug.ExprInspection -analyzer-config support-symbolic-integer-casts=true -verify %s
+
+using uchar = unsigned char;
+using schar = signed char;
+using ushort = unsigned short;
+using uint = unsigned int;
+using ulong = unsigned long;
+using llong = long long;
+using ullong = unsigned long long;
+
+template <typename T>
+void clang_analyzer_dump(T);
+
+void test_schar(schar x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<schar x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{reg_$0<schar x>}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) ((unsigned int) (reg_$0<schar x>))}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<schar x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) ((unsigned int) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+}
+
+void test_char(char x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<char x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{reg_$0<char x>}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) ((unsigned int) (reg_$0<char x>))}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<char x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) ((unsigned int) (reg_$0<char x>))}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<char x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+}
+
+void test_short(short x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<short x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{reg_$0<short x>}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) ((unsigned int) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) ((unsigned int) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+}
+
+void test_int(int x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<int x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{reg_$0<int x>}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) ((unsigned int) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) ((unsigned int) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+}
+
+void test_long(long x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<long x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{reg_$0<long x>}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) ((int) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<long x>}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) ((int) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) ((unsigned int) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+}
+
+void test_llong(llong x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<llong x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) ((int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) ((unsigned int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{reg_$0<llong x>}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) ((int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) ((unsigned int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+}
+
+void test_uchar(uchar x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<uchar x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{reg_$0<uchar x>}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+}
+
+void test_ushort(ushort x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<ushort x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{reg_$0<ushort x>}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+}
+
+void test_uint(uint x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<uint x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) ((int) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) ((int) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{reg_$0<uint x>}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) ((int) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+}
+
+void test_ulong(ulong x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<ulong x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) ((int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) ((unsigned int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) ((int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{reg_$0<ulong x>}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+}
+
+void test_llong(ullong x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<ullong x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{reg_$0<ullong x>}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) ((int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) ((unsigned int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) ((int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) ((int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) ((unsigned int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{reg_$0<ullong x>}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{reg_$0<ullong x>}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{reg_$0<ullong x>}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{reg_$0<ullong x>}}
+}

diff  --git a/clang/test/Analysis/produce-symbolcast_x86.cpp b/clang/test/Analysis/produce-symbolcast_x86.cpp
new file mode 100644
index 000000000000..0db10072a6eb
--- /dev/null
+++ b/clang/test/Analysis/produce-symbolcast_x86.cpp
@@ -0,0 +1,1640 @@
+// RUN: %clang_analyze_cc1 -triple i386-pc-linux-gnu -analyzer-checker=debug.ExprInspection -analyzer-config support-symbolic-integer-casts=true -verify %s
+
+using uchar = unsigned char;
+using schar = signed char;
+using ushort = unsigned short;
+using uint = unsigned int;
+using ulong = unsigned long;
+using llong = long long;
+using ullong = unsigned long long;
+
+template <typename T>
+void clang_analyzer_dump(T);
+
+void test_schar(schar x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<schar x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{reg_$0<schar x>}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{reg_$0<schar x>}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<schar x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) ((unsigned long) (reg_$0<schar x>))}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<schar x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) ((unsigned long) (reg_$0<schar x>))}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<schar x>)}}
+}
+
+void test_char(char x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<char x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<char x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{reg_$0<char x>}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{reg_$0<char x>}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<char x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<char x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<char x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<char x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) ((unsigned long) (reg_$0<char x>))}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<char x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<char x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<char x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<char x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) ((unsigned long) (reg_$0<char x>))}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<char x>)}}
+}
+
+void test_short(short x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<short x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<short x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<short x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{reg_$0<short x>}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{reg_$0<short x>}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<short x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<short x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) ((unsigned long) (reg_$0<short x>))}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<short x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) ((unsigned long) (reg_$0<short x>))}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<short x>)}}
+}
+
+void test_int(int x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<int x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<int x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<int x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<int x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{reg_$0<int x>}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{reg_$0<int x>}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<int x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) ((unsigned long) (reg_$0<int x>))}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<int x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) ((unsigned long) (reg_$0<int x>))}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<int x>)}}
+}
+
+void test_long(long x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<long x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<long x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<long x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(char) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(short) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{reg_$0<long x>}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{reg_$0<long x>}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) ((unsigned long) (reg_$0<long x>))}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<long x>}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<long x>}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<long x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) ((unsigned long) (reg_$0<long x>))}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<long x>)}}
+}
+
+void test_llong(llong x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<llong x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{reg_$0<llong x>}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{reg_$0<llong x>}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<llong x>}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<llong x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) ((long) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) ((unsigned long) (reg_$0<llong x>))}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<llong x>)}}
+}
+
+void test_uchar(uchar x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<uchar x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{reg_$0<uchar x>}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{reg_$0<uchar x>}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<uchar x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<uchar x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uchar x>)}}
+}
+
+void test_ushort(ushort x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<ushort x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{reg_$0<ushort x>}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{reg_$0<ushort x>}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<ushort x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<ushort x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ushort x>)}}
+}
+
+void test_uint(uint x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<uint x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<uint x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) ((int) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) ((long) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(signed char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<uint x>)}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{reg_$0<uint x>}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{reg_$0<uint x>}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<uint x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) ((long) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<uint x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<uint x>)}}
+}
+
+void test_ulong(ulong x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<ulong x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) ((int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) ((long) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<ulong x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(signed char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{reg_$0<ulong x>}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{reg_$0<ulong x>}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) ((long) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<ulong x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{(unsigned long long) (reg_$0<ulong x>)}}
+}
+
+void test_llong(ullong x) {
+  clang_analyzer_dump(x); // expected-warning{{reg_$0<ullong x>}}
+
+  clang_analyzer_dump((schar)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)x);    // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)x);   // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((llong)x);  // expected-warning{{(long long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)x); // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)x);   // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ullong)x); // expected-warning{{reg_$0<ullong x>}}
+
+  clang_analyzer_dump((schar)(schar)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(char)x);   // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(short)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(int)x);    // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(long)x);   // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(llong)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(uchar)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(ushort)x); // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(uint)x);   // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(ulong)x);  // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((schar)(ullong)x); // expected-warning{{(signed char) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((char)(schar)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(char)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(short)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(int)x);    // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(long)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(llong)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(uchar)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(ushort)x); // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(uint)x);   // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(ulong)x);  // expected-warning{{(char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((char)(ullong)x); // expected-warning{{(char) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((short)(schar)x);  // expected-warning{{(short) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((short)(char)x);   // expected-warning{{(short) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((short)(short)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(int)x);    // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(long)x);   // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(llong)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(uchar)x);  // expected-warning{{(short) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((short)(ushort)x); // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(uint)x);   // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(ulong)x);  // expected-warning{{(short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((short)(ullong)x); // expected-warning{{(short) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((int)(schar)x);  // expected-warning{{(int) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(char)x);   // expected-warning{{(int) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(short)x);  // expected-warning{{(int) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(int)x);    // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(long)x);   // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(llong)x);  // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(uchar)x);  // expected-warning{{(int) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(ushort)x); // expected-warning{{(int) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((int)(uint)x);   // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(ulong)x);  // expected-warning{{(int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((int)(ullong)x); // expected-warning{{(int) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((long)(schar)x);  // expected-warning{{(long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(char)x);   // expected-warning{{(long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(short)x);  // expected-warning{{(long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(int)x);    // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(long)x);   // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(llong)x);  // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(uchar)x);  // expected-warning{{(long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(ushort)x); // expected-warning{{(long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((long)(uint)x);   // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(ulong)x);  // expected-warning{{(long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((long)(ullong)x); // expected-warning{{(long) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((llong)(schar)x);  // expected-warning{{(long long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(char)x);   // expected-warning{{(long long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(short)x);  // expected-warning{{(long long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(int)x);    // expected-warning{{(long long) ((int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(long)x);   // expected-warning{{(long long) ((long) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(llong)x);  // expected-warning{{(long long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((llong)(uchar)x);  // expected-warning{{(long long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(ushort)x); // expected-warning{{(long long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(uint)x);   // expected-warning{{(long long) ((unsigned int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(ulong)x);  // expected-warning{{(long long) ((unsigned long) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((llong)(ullong)x); // expected-warning{{(long long) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((uchar)(schar)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(char)x);   // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(short)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(int)x);    // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(long)x);   // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(llong)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(uchar)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(ushort)x); // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(uint)x);   // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(ulong)x);  // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uchar)(ullong)x); // expected-warning{{(unsigned char) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((ushort)(schar)x);  // expected-warning{{(unsigned short) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ushort)(char)x);   // expected-warning{{(unsigned short) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ushort)(short)x);  // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(int)x);    // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(long)x);   // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(llong)x);  // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(uchar)x);  // expected-warning{{(unsigned short) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ushort)(ushort)x); // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(uint)x);   // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(ulong)x);  // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ushort)(ullong)x); // expected-warning{{(unsigned short) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((uint)(schar)x);  // expected-warning{{(unsigned int) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(char)x);   // expected-warning{{(unsigned int) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(short)x);  // expected-warning{{(unsigned int) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(int)x);    // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(long)x);   // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(llong)x);  // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(uchar)x);  // expected-warning{{(unsigned int) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(ushort)x); // expected-warning{{(unsigned int) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((uint)(uint)x);   // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(ulong)x);  // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((uint)(ullong)x); // expected-warning{{(unsigned int) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((ulong)(schar)x);  // expected-warning{{(unsigned long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(char)x);   // expected-warning{{(unsigned long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(short)x);  // expected-warning{{(unsigned long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(int)x);    // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(long)x);   // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(llong)x);  // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(uchar)x);  // expected-warning{{(unsigned long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(ushort)x); // expected-warning{{(unsigned long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ulong)(uint)x);   // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(ulong)x);  // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+  clang_analyzer_dump((ulong)(ullong)x); // expected-warning{{(unsigned long) (reg_$0<ullong x>)}}
+
+  clang_analyzer_dump((ullong)(schar)x);  // expected-warning{{(unsigned long long) ((signed char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(char)x);   // expected-warning{{(unsigned long long) ((char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(short)x);  // expected-warning{{(unsigned long long) ((short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(int)x);    // expected-warning{{(unsigned long long) ((int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(long)x);   // expected-warning{{(unsigned long long) ((long) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(llong)x);  // expected-warning{{reg_$0<ullong x>}}
+  clang_analyzer_dump((ullong)(uchar)x);  // expected-warning{{(unsigned long long) ((unsigned char) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(ushort)x); // expected-warning{{(unsigned long long) ((unsigned short) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(uint)x);   // expected-warning{{(unsigned long long) ((unsigned int) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(ulong)x);  // expected-warning{{(unsigned long long) ((unsigned long) (reg_$0<ullong x>))}}
+  clang_analyzer_dump((ullong)(ullong)x); // expected-warning{{reg_$0<ullong x>}}
+}


        


More information about the cfe-commits mailing list