llvm-project/clang/test/SemaTemplate
Richard Smith 9ca6461f5a When we suppress an error due to SFINAE, stash the diagnostic away with the
overload candidate, and include its message in any subsequent 'candidate not
viable due to substitution failure' note we may produce.

To keep the note small (since the 'overload resolution failed' diagnostics are
often already very verbose), the text of the SFINAE diagnostic is included as
part of the text of the note, and any notes which were attached to it are
discarded.

There happened to be spare space in OverloadCandidate into which a
PartialDiagnosticAt could be squeezed, and this patch goes to lengths to avoid
unnecessary PartialDiagnostic copies, resulting in no slowdown that I could
measure. (Removal in passing of some PartialDiagnostic copies has resulted in a
slightly smaller clang binary overall.) Even on a torture test, I was unable to
measure a memory increase of above 0.2%.

llvm-svn: 156297
2012-05-07 09:03:25 +00:00
..
ackermann.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
address-spaces.cpp When comparing parameters of reference-to-qualified type during 2011-04-30 17:07:52 +00:00
alias-church-numerals.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
alias-nested-nontag.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
alias-template-template-param.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
alias-templates.cpp When we're substituting into a function parameter pack and expect to 2012-01-25 16:15:54 +00:00
ambiguous-ovl-print.cpp Improve the reporting of non-viable overload candidates by noting the reason 2010-01-13 00:25:19 +00:00
anonymous-union.cpp When searching for an instantiated declaration requires instantiation 2010-11-05 23:22:45 +00:00
array-to-pointer-decay.cpp Apply array-to-pointer decay when instantiating a MemberExpr. Fixes 2010-06-22 02:41:05 +00:00
atomics.cpp Mark the overloaded atomic builtins as having custom type checking, 2011-11-08 19:45:38 +00:00
attributes.cpp For the various CF and NS attributes, don't complain if the parameter 2011-10-09 22:26:49 +00:00
canonical-expr-type-0x.cpp PR12438: Profile a reference to a type template parameter by depth and index, 2012-04-02 18:53:24 +00:00
canonical-expr-type.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
class-template-ctor-initializer.cpp PR10828: Produce a warning when a no-arguments function is declared in block 2012-01-05 04:12:21 +00:00
class-template-decl.cpp Fix test failure. 2012-04-21 01:51:32 +00:00
class-template-id-2.cpp When pretty-printing tag types, only print the tag if we're in C (and 2010-03-10 11:27:22 +00:00
class-template-id.cpp "const std::vector<int>*" not "std::vector<int> const*" 2010-09-05 00:27:00 +00:00
class-template-spec.cpp Change the diagnostics which said 'accepted as an extension' to instead say 2011-12-29 21:57:33 +00:00
constexpr-instantiate.cpp Ensure that we instantiate static reference data members of class templates 2012-03-02 04:14:40 +00:00
constructor-template.cpp Improve our handling of C++ [class.copy]p3, which specifies that a 2010-11-08 17:16:59 +00:00
copy-ctor-assign.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
crash-8204126.cpp Don't set out-of-line template specialization/definition information 2010-07-28 23:59:57 +00:00
crash-10438657.cpp When we're checking access in a dependent context, don't try to look 2011-11-14 23:00:43 +00:00
current-instantiation.cpp When declaring an out-of-line template, attempt to rebuild any types 2011-10-14 15:31:12 +00:00
deduction-crash.cpp Fix parsing of type-specifier-seq's. Types are syntactically allowed to be 2012-03-12 07:56:15 +00:00
deduction.cpp Restore the C-style cast hack for enum template arguments, 2011-07-15 07:47:58 +00:00
default-arguments-cxx0x.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
default-arguments.cpp When performing substitution of default template template parameters 2011-06-15 14:20:42 +00:00
default-expr-arguments-2.cpp Tweak GetPreamblePCHPath() to more closely match the behavior of the 2010-09-11 17:51:16 +00:00
default-expr-arguments.cpp Add a missing ExpressionEvaluationContext for template default arguments. Fixes PR12581. 2012-04-26 22:43:24 +00:00
delegating-constructors.cpp Rework the AST for the initializer of a delegating constructor, so 2011-11-01 01:16:03 +00:00
dependent-base-classes.cpp When we run into an error parsing or type-checking the left-hand side 2010-09-17 22:25:06 +00:00
dependent-base-member-init.cpp PR7698: Make sure we correctly handle the initialization of an array with 2010-07-24 21:19:15 +00:00
dependent-class-member-operator.cpp PR7837: For qualified id's, make sure the decl context is complete if not 2010-08-06 23:41:47 +00:00
dependent-expr.cpp Don't try to compute the value of a value-dependent expression when 2010-12-21 07:22:56 +00:00
dependent-names-no-std.cpp Hyphenate "argument-dependent". 2011-06-14 12:59:25 +00:00
dependent-names.cpp When resolving default template arguments, it should be done in the declaration context 2012-04-25 18:39:17 +00:00
dependent-sized_array.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
dependent-template-recover.cpp When constructing source-location information for a 2011-03-04 18:53:13 +00:00
dependent-type-identity.cpp When computing the canonical profile of a DeclRefExpr or MemberExpr, 2010-07-13 08:37:11 +00:00
destructor-template.cpp Diagnose destructor templates. Fixes PR7904. 2011-03-04 22:45:55 +00:00
elaborated-type-specifier.cpp Tag references shouldn't ever get template parameter lists. 2010-10-19 18:40:57 +00:00
enum-argument.cpp Clarify the logic for when to build an overloaded binop. In particular, 2010-12-06 05:26:58 +00:00
enum-forward.cpp Shift Microsoft enum extensions from -fms-extensions to -fms-compatibility, so -fms-extensions doesn't affect enum semantics in incompatible ways. <rdar://problem/10657186>. 2012-02-16 05:20:44 +00:00
example-dynarray.cpp tests: Use %clangxx when using driver for C++, in case C++ support is disabled. 2010-06-29 16:52:24 +00:00
example-typelist.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
explicit-instantiation.cpp Pass context and access to Parser::ParseExplicitInstantiation() for 2011-12-23 02:16:45 +00:00
explicit-specialization-member.cpp Instantiate class member template partial specialization declarations 2010-11-10 19:44:59 +00:00
ext-vector-type.cpp Eliminate a 'default' case in template argument deduction, where we 2011-06-15 16:02:29 +00:00
extern-templates.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
fibonacci.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
friend-template.cpp PR12585: When processing a friend template inside a class template, don't 2012-04-22 02:13:50 +00:00
friend.cpp Modify how the -verify flag works. Currently, the verification string and 2011-12-15 00:38:15 +00:00
fun-template-def.cpp 'const std::type_info*' instead of 'std::type_info const*' 2010-09-05 00:17:29 +00:00
function-template-specialization.cpp Disallow function template partial specializations, from Hans 2011-01-24 18:54:39 +00:00
implicit-instantiation-1.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
inject-templated-friend-post.cpp Switch to using %clang_cc1 properly rather than manually passing the -cc1 flag. 2010-11-13 10:19:35 +00:00
inject-templated-friend.cpp Switch to using %clang_cc1 properly rather than manually passing the -cc1 flag. 2010-11-13 10:19:35 +00:00
injected-class-name.cpp When we start the definition of a class template, set the 2010-04-30 04:39:27 +00:00
instantiate-anonymous-union.cpp When building a qualified reference to a member of an anonymous struct 2011-02-18 02:44:58 +00:00
instantiate-array.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
instantiate-attr.cpp Instantiate attributes from the pattern record when instantiating 2010-08-01 02:01:53 +00:00
instantiate-c99.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-call.cpp Hyphenate "argument-dependent". 2011-06-14 12:59:25 +00:00
instantiate-case.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-cast.cpp Implement appropriate semantics for C++ casting and conversion when 2011-04-15 17:59:54 +00:00
instantiate-clang.cpp Continue to instantiate sub-statements in a CompoundStmt as long as 2010-08-27 19:56:05 +00:00
instantiate-complete.cpp --lies. 2012-02-10 09:37:07 +00:00
instantiate-decl-dtor.cpp Make sure we instantiate the destructor for variables initialized by 2009-12-20 22:29:11 +00:00
instantiate-decl-init.cpp A dependent initializer with zero arguments should return a NULL 2010-02-05 07:56:11 +00:00
instantiate-declref-ice.cpp C++ constant expression handling: eagerly instantiate static const integral data 2011-12-21 00:25:33 +00:00
instantiate-declref.cpp Implement DR1330 in C++11 mode, to support libstdc++4.7 which uses it. 2012-04-17 00:58:00 +00:00
instantiate-deeply.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-default-assignment-operator.cpp Enhance the diagnostic for negative array sizes to include the 2011-01-04 04:44:35 +00:00
instantiate-dependent-nested-name.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-elab-type-specifier.cpp Change the representation of dependent elaborated-type-specifiers 2010-03-31 22:19:08 +00:00
instantiate-enum-2.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-enum.cpp When instantiating a function-scoped enum, make sure that it and its 2010-03-01 19:00:07 +00:00
instantiate-exception-spec-cxx11.cpp PR 12586: Fix assert while running libc++ testsuite: deal with exception 2012-04-19 00:08:28 +00:00
instantiate-exception-spec.cpp When pretty-printing tag types, only print the tag if we're in C (and 2010-03-10 11:27:22 +00:00
instantiate-expr-1.cpp Pedantic diagnostic correction: in C++, we have integral constant expressions, 2012-01-15 03:51:30 +00:00
instantiate-expr-2.cpp When transforming a C++ "new" expression's constructor arguments, drop 2010-05-26 07:10:06 +00:00
instantiate-expr-3.cpp Properly diagnose using abstract and incomplete types in va_arg 2011-06-14 05:17:32 +00:00
instantiate-expr-4.cpp Fix crash due to missing array-to-pointer decay when instantiating an unresolved 2011-10-26 06:49:26 +00:00
instantiate-expr-5.cpp Modify how the -verify flag works. Currently, the verification string and 2011-12-15 00:38:15 +00:00
instantiate-expr-basic.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
instantiate-field.cpp Before checking bitfield initialization, make sure that neither the 2011-02-04 13:09:01 +00:00
instantiate-friend-class.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-function-1.cpp Promote the extension warning for attempts to catch a reference or 2012-01-24 19:01:26 +00:00
instantiate-function-1.mm Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-function-2.cpp Switch diagnostic text from "C++0x" over to "C++11". 2011-10-12 19:26:40 +00:00
instantiate-function-params.cpp When instantiating a function that was declared via a typedef, e.g., 2010-05-04 18:18:31 +00:00
instantiate-init.cpp Improve the instantiation of static data members in 2011-06-03 14:28:43 +00:00
instantiate-invalid.cpp Robustify instantiation of templates when there are errors in the 2010-03-01 18:27:54 +00:00
instantiate-local-class.cpp For member pointer conversions potentially involving derived-to-base 2010-12-21 21:40:41 +00:00
instantiate-member-class.cpp Tighten up the conditions under which we consider ourselves to be 2011-11-07 17:33:42 +00:00
instantiate-member-expr.cpp Enhance the diagnostic for negative array sizes to include the 2011-01-04 04:44:35 +00:00
instantiate-member-initializers.cpp Diagnose misordered initializers in constructor templates immediately instead of 2010-04-10 07:37:23 +00:00
instantiate-member-pointers.cpp Enhance the diagnostic for negative array sizes to include the 2011-01-04 04:44:35 +00:00
instantiate-member-template.cpp When transforming a dependent template specialization type, make sure 2011-03-07 02:33:33 +00:00
instantiate-method.cpp When instantiating a member function declared via a typedef, don't try 2010-05-03 15:32:18 +00:00
instantiate-non-dependent-types.cpp When we encounter a non-dependent type during template instantiation, 2010-05-07 23:12:07 +00:00
instantiate-non-type-template-parameter.cpp When we're creating an expression for an integral template argument of 2011-02-18 02:12:44 +00:00
instantiate-objc-1.mm Fix test cases broken by 155936. 2012-05-01 21:29:03 +00:00
instantiate-overload-candidates.cpp Add a test for a subtle instantiation pattern that showed up within a Boost 2010-05-11 08:02:08 +00:00
instantiate-overloaded-arrow.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-self.cpp During the instantiation of a class template specialization, that 2012-03-22 03:35:28 +00:00
instantiate-sizeof.cpp A couple minor bug-fixes for template instantiation for expressions which are sometimes potentially evaluated. 2012-02-29 04:03:55 +00:00
instantiate-static-var.cpp Change the diagnostics which said 'accepted as an extension' to instead say 2011-12-29 21:57:33 +00:00
instantiate-subscript.cpp Improve the lead diagnostic for C++ object subscript expressions with 2010-01-07 02:04:15 +00:00
instantiate-template-template-parm.cpp Add test for PR8629 2011-01-25 18:11:52 +00:00
instantiate-try-catch.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
instantiate-type.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiate-typedef.cpp Make CXXScopeSpec invalid when incomplete, and propagate that into any 2010-04-08 16:38:48 +00:00
instantiate-typeof.cpp A couple minor bug-fixes for template instantiation for expressions which are sometimes potentially evaluated. 2012-02-29 04:03:55 +00:00
instantiate-using-decl.cpp Fix handling of dependent nested namespace specifiers in UsingDecls 2010-09-29 17:58:28 +00:00
instantiation-backtrace.cpp When pretty-printing tag types, only print the tag if we're in C (and 2010-03-10 11:27:22 +00:00
instantiation-default-1.cpp make clang print types as "const int *" instead of "int const*", 2010-09-05 00:04:01 +00:00
instantiation-default-2.cpp Overhaul checking of non-type template arguments that should refer to 2010-04-01 18:32:35 +00:00
instantiation-default-3.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
instantiation-depth.cpp Add driver arguments -ftemplate-depth=N and -fconstexpr-depth=N, with the same 2011-11-21 19:36:32 +00:00
instantiation-order.cpp Track whether a function type has a trailing return type as type sugar. Use this 2012-02-10 09:58:53 +00:00
issue150.cpp When substituting in for a template name, do not produce a qualified 2011-03-05 20:06:51 +00:00
lookup-dependent-bases.cpp In Microsoft mode, if we are within a templated function and we can't resolve Identifier during BuildCXXNestedNameSpecifier, then extend the SS with Identifier. This will have the effect of resolving Identifier during template instantiation. The goal is to be able to resolve a function call whose nested-name-specifier is located inside a dependent base class. 2011-07-27 01:05:24 +00:00
member-access-ambig.cpp When performing name lookup for the previous declaration of a field, 2011-10-21 15:47:52 +00:00
member-access-expr.cpp Clarify the logic for when to build an overloaded binop. In particular, 2010-12-06 05:26:58 +00:00
member-function-template.cpp Canonicalize template template parameters when canonicalizing a 2010-06-16 21:09:37 +00:00
member-inclass-init-value-dependent.cpp Replace r134583's fix for PR10290 with one which also works for non-value-dependent cases. 2011-07-20 00:12:52 +00:00
member-initializers.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
member-template-access-expr.cpp Enable warn_impcast_literal_float_to_integer by default. 2012-04-05 00:16:44 +00:00
metafun-apply.cpp When pretty-printing tag types, only print the tag if we're in C (and 2010-03-10 11:27:22 +00:00
missing-class-keyword-crash.cpp Fix a crash-on-invalid. 2011-08-25 23:22:24 +00:00
ms-function-specialization-class-scope.cpp fix typo in test. 2011-08-14 22:30:29 +00:00
ms-if-exists.cpp Implement the Microsoft __if_exists/if_not_exists extension in initializer-list. 2011-12-12 23:24:39 +00:00
ms-lookup-template-base-classes.cpp In Microsoft mode, don't perform typo correction in a template member function dependent context because it interferes with the "lookup into dependent bases of class templates" feature. 2011-12-03 15:55:29 +00:00
nested-incomplete-class.cpp Represent C++ direct initializers as ParenListExprs before semantic analysis 2012-02-11 23:51:47 +00:00
nested-linkage.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
nested-name-spec-template.cpp Don't ask if a depenendent CXXRecordDecl has any dependent bases 2011-03-11 23:27:41 +00:00
nested-template.cpp When we see an out-of-line definition of a member class template that 2011-11-01 21:35:16 +00:00
operator-function-id-template.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
operator-template.cpp When we determine that a function template specialization produced as 2011-10-12 20:35:48 +00:00
overload-candidates.cpp When we suppress an error due to SFINAE, stash the diagnostic away with the 2012-05-07 09:03:25 +00:00
overload-uneval.cpp Whitelist operator== and operator!= as valid for unused value warnings, 2011-08-17 09:49:44 +00:00
partial-spec-instantiate.cpp When converting an integral template argument value to a non-type 2011-05-04 21:55:00 +00:00
pragma-ms_struct.cpp Make sure we convert struct layout pragmas to attributes for class templates the same way we do for non-template classes. <rdar://problem/10791194>. 2012-02-10 02:02:21 +00:00
qualified-id.cpp Replace a FIXME with a diagnostic when we can't resolve the 2012-03-18 00:15:42 +00:00
qualified-names-diag.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
rdar9173693.cpp Fix a double free when parsing malformed code. Fixes rdar://9173693. 2011-05-03 18:45:38 +00:00
recovery-crash.cpp Add a workaround for PR7947, a crash trying to recover from invalid C++ code. 2010-08-20 20:54:15 +00:00
recursive-template-instantiation.cpp Note that an overload candidate was non-viable because template argument 2010-02-01 18:53:26 +00:00
resolve-single-template-id.cpp Add notes for suppressing and (if it's a zero-arg function returning bool) fixing the function-to-bool conversion warning. 2011-12-09 21:42:37 +00:00
self-comparison.cpp Lay the ground work for resoving PR7047. This doesn't actually fix it because 2010-07-10 12:30:03 +00:00
temp.cpp If filtering a lookup result leaves it ambiguous, keep the ambiguity 2010-08-28 20:17:00 +00:00
temp_arg.cpp Explain that a template needs arguments to make it into a type, for 2010-04-08 21:04:54 +00:00
temp_arg_nontype.cpp When we determine that a function template specialization produced as 2011-10-12 20:35:48 +00:00
temp_arg_template.cpp Correct test from r152189. 2012-03-07 01:13:38 +00:00
temp_arg_type.cpp Allow anonymous and local types. The support was already in place for these, 2010-09-03 21:12:34 +00:00
temp_class_order.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
temp_class_spec.cpp Implement a specific diagnostic when a class template partial 2010-02-09 00:37:32 +00:00
temp_class_spec_blocks.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
temp_class_spec_neg.cpp Change the diagnostics which said 'accepted as an extension' to instead say 2011-12-29 21:57:33 +00:00
temp_explicit.cpp Switch to the C++11 warning flags in tests. 2011-10-18 05:54:07 +00:00
temp_explicit_cxx0x.cpp Refactor the checking for explicit template instantiations being performed in 2011-10-18 02:28:33 +00:00
temp_func_order.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
template-class-traits.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
template-decl-fail.cpp It's okay to reference an enum in a template definition, even though 2010-05-03 17:48:54 +00:00
template-id-expr.cpp Fixed instantiation of DependentScopeDeclRefExpr. 2012-02-06 14:31:00 +00:00
template-id-printing.cpp Fixed instantiation of DependentScopeDeclRefExpr. 2012-02-06 14:31:00 +00:00
typename-specifier-2.cpp Switch file-scope assignment initialization over to InitializationSequence. 2009-12-22 02:10:53 +00:00
typename-specifier-3.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
typename-specifier-4.cpp When building a type for a typename specifier, check specifically for 2011-03-01 16:44:30 +00:00
typename-specifier.cpp Diagnose attempts to use 'using typename' with a non-identifier name, 2011-09-26 14:30:28 +00:00
typo-dependent-name.cpp When determining whether a given name is a template in a dependent 2010-01-12 17:06:20 +00:00
unresolved-construct.cpp Update all tests other than Driver/std.cpp to use -std=c++11 rather than 2011-10-13 22:29:44 +00:00
unused-variables.cpp Improve our handling of the -Wunused-variable warning in templates. In 2010-05-08 23:05:03 +00:00
value-dependent-null-pointer-constant.cpp Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'. 2009-12-15 20:14:24 +00:00
virtual-member-functions.cpp Rework when and how vtables are emitted, by tracking where vtables are 2010-05-13 16:44:06 +00:00