summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2019-10-14 12:22:48 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2019-10-14 12:22:48 +0000
commit1a21f98ac3c57d027908000b8bac356daec51416 (patch)
tree9ed8a7cdea6b2580e007cf82401073f4ffff08ba /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
parentc4d256a59049d4b2f21da83f43b9caba2427885e (diff)
downloadbcm5719-llvm-1a21f98ac3c57d027908000b8bac356daec51416.tar.gz
bcm5719-llvm-1a21f98ac3c57d027908000b8bac356daec51416.zip
Revert "Add a pass to lower is.constant and objectsize intrinsics"
This reverts commit r374743. It broke the build with Ocaml enabled: http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/19218 llvm-svn: 374768
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index 9a29a010c14..3c36cc6f659 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -6388,11 +6388,29 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
DAG.setRoot(Res);
return;
}
- case Intrinsic::objectsize:
- llvm_unreachable("llvm.objectsize.* should have been lowered already");
+ case Intrinsic::objectsize: {
+ // If we don't know by now, we're never going to know.
+ ConstantInt *CI = dyn_cast<ConstantInt>(I.getArgOperand(1));
+
+ assert(CI && "Non-constant type in __builtin_object_size?");
+
+ SDValue Arg = getValue(I.getCalledValue());
+ EVT Ty = Arg.getValueType();
+
+ if (CI->isZero())
+ Res = DAG.getConstant(-1ULL, sdl, Ty);
+ else
+ Res = DAG.getConstant(0, sdl, Ty);
+
+ setValue(&I, Res);
+ return;
+ }
case Intrinsic::is_constant:
- llvm_unreachable("llvm.is.constant.* should have been lowered already");
+ // If this wasn't constant-folded away by now, then it's not a
+ // constant.
+ setValue(&I, DAG.getConstant(0, sdl, MVT::i1));
+ return;
case Intrinsic::annotation:
case Intrinsic::ptr_annotation:
OpenPOWER on IntegriCloud