aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2012-05-01 20:28:45 +0000
committerDavid Blaikie <dblaikie@gmail.com>2012-05-01 20:28:45 +0000
commitca2e1b7990230c5088eb2f280cea9db5f516ad69 (patch)
tree5ff85f841e9956dff5c430ea641820f0e9175179
parent6c803f7f46533c69e2f8a9a882af9ae3b7fffb6f (diff)
Workaround a miscompile in 483.xalancbmk while we figure it out.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155938 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaExpr.cpp1
-rw-r--r--test/SemaCXX/conversion.cpp6
2 files changed, 4 insertions, 3 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 4ed588565f..aaf579eda6 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -3302,7 +3302,6 @@ ExprResult Sema::BuildCXXDefaultArgExpr(SourceLocation CallLoc,
Expr *Arg = Result.takeAs<Expr>();
CheckImplicitConversions(Arg, Arg->getExprLoc());
- Param->setDefaultArg(Arg);
// Build the default argument expression.
return Owned(CXXDefaultArgExpr::Create(Context, CallLoc, Param, Arg));
}
diff --git a/test/SemaCXX/conversion.cpp b/test/SemaCXX/conversion.cpp
index da78510c64..b019536e1a 100644
--- a/test/SemaCXX/conversion.cpp
+++ b/test/SemaCXX/conversion.cpp
@@ -86,9 +86,9 @@ namespace test4 {
// FIXME: We should warn for non-dependent args (only when the param type is also non-dependent) only once
// not once for the template + once for every instantiation
template<typename T>
- void tmpl(char c = NULL, // expected-warning 3 {{implicit conversion of NULL constant to 'char'}}
+ void tmpl(char c = NULL, // expected-warning 4 {{implicit conversion of NULL constant to 'char'}}
T a = NULL, // expected-warning {{implicit conversion of NULL constant to 'char'}} \
- expected-warning {{implicit conversion of NULL constant to 'int'}}
+ expected-warning 2 {{implicit conversion of NULL constant to 'int'}}
T b = 1024) { // expected-warning {{implicit conversion from 'int' to 'char' changes value from 1024 to 0}}
}
@@ -99,6 +99,8 @@ namespace test4 {
void func() {
tmpl<char>(); // expected-note 2 {{in instantiation of default function argument expression for 'tmpl<char>' required here}}
tmpl<int>(); // expected-note 2 {{in instantiation of default function argument expression for 'tmpl<int>' required here}}
+ // FIXME: We should warn only once for each template instantiation - not once for each call
+ tmpl<int>(); // expected-note 2 {{in instantiation of default function argument expression for 'tmpl<int>' required here}}
tmpl2<int*>();
}
}