OSDN Git Service

Sema: allow imaginary constants via GNU extension if UDL overloads not present.
authorTim Northover <tnorthover@apple.com>
Tue, 23 May 2017 21:41:49 +0000 (21:41 +0000)
committerTim Northover <tnorthover@apple.com>
Tue, 23 May 2017 21:41:49 +0000 (21:41 +0000)
C++14 added user-defined literal support for complex numbers so that you can
write something like "complex<double> val = 2i". However, there is an existing
GNU extension supporting this syntax and interpreting the result as a _Complex
type.

This changes parsing so that such literals are interpreted in terms of C++14's
operators if an overload is present but otherwise falls back to the original
GNU extension.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303694 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

index 57d340c..4c7d980 100644 (file)
@@ -2394,9 +2394,12 @@ void SelectionDAGBuilder::visitIndirectBr(const IndirectBrInst &I) {
 }
 
 void SelectionDAGBuilder::visitUnreachable(const UnreachableInst &I) {
-  if (DAG.getTarget().Options.TrapUnreachable)
+  errs() << "WARNING: trap\n";
+  if (DAG.getTarget().Options.TrapUnreachable) {
     DAG.setRoot(
         DAG.getNode(ISD::TRAP, getCurSDLoc(), MVT::Other, DAG.getRoot()));
+
+  }
 }
 
 void SelectionDAGBuilder::visitFSub(const User &I) {