const FunctionDecl *CalleeDecl,
unsigned ParamsToSkip,
bool ForceColumnInfo) {
+ CGDebugInfo *DI = getDebugInfo();
+ SourceLocation CallLoc;
+ if (DI) CallLoc = DI->getLocation();
+
// We *have* to evaluate arguments from right to left in the MS C++ ABI,
// because arguments are destroyed left to right in the callee.
if (CGM.getTarget().getCXXABI().areArgsDestroyedLeftToRightInCallee()) {
EmitCallArg(Args, *Arg, ArgTypes[I]);
emitNonNullArgCheck(*this, Args.back().RV, ArgTypes[I], Arg->getExprLoc(),
CalleeDecl, ParamsToSkip + I);
+ // Restore the debug location.
+ if (DI) DI->EmitLocation(Builder, CallLoc, ForceColumnInfo);
}
// Un-reverse the arguments we just evaluated so they match up with the LLVM
EmitCallArg(Args, *Arg, ArgTypes[I]);
emitNonNullArgCheck(*this, Args.back().RV, ArgTypes[I], Arg->getExprLoc(),
CalleeDecl, ParamsToSkip + I);
+ // Restore the debug location.
+ if (DI) DI->EmitLocation(Builder, CallLoc, ForceColumnInfo);
}
}
/// invalid it is ignored.
void setLocation(SourceLocation Loc);
+ /// getLocation - Return the current source location.
+ SourceLocation getLocation() const { return CurLoc; }
+
/// EmitLocation - Emit metadata to indicate a change in line/column
/// information in the source file.
/// \param ForceColumnInfo Assume DebugColumnInfo option is true.
// RUN: %clang_cc1 %s -std=c++11 -emit-llvm-only
+// RUN: %clang_cc1 -emit-obj -o %t -gline-tables-only -O2 -std=c++11 %s
// CHECK that we don't crash.
// PR11676's example is ill-formed:
void f() { finalizeDefaultAtomValues<int>(); }
}
+
+namespace PR22096 {
+class _String_val {
+ union _Bxty { int i; } _Bx;
+};
+struct string : public _String_val {
+ string(const char *_Ptr) : _String_val() {}
+};
+
+
+int ConvertIPv4NumberToIPv6Number(int);
+struct IPEndPoint {
+ IPEndPoint();
+ IPEndPoint(const int &address, int port);
+ const int &address() const {}
+};
+
+struct SourceAddressTokenTest {
+ SourceAddressTokenTest()
+ : ip4_dual_(ConvertIPv4NumberToIPv6Number(ip4_.address()), 1) {}
+ const string kPrimary = "<primary>";
+ IPEndPoint ip4_;
+ IPEndPoint ip4_dual_;
+} s;
+}