diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-02-02 17:47:33 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-02-02 18:00:23 -0800 |
commit | a1ab1a3c0fc16304c8e3b253703484cee575084a (patch) | |
tree | 794f445601432553036d805745f4a449edb95714 /lib/Target/JSBackend/JSBackend.cpp | |
parent | 91288b653d28c8fe4aeb69b06ce82d75646e72a7 (diff) |
abort on loads from constant addresses in general, not just based on weird alignment
Diffstat (limited to 'lib/Target/JSBackend/JSBackend.cpp')
-rw-r--r-- | lib/Target/JSBackend/JSBackend.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/JSBackend/JSBackend.cpp b/lib/Target/JSBackend/JSBackend.cpp index e7253115d4..8d85a89c6b 100644 --- a/lib/Target/JSBackend/JSBackend.cpp +++ b/lib/Target/JSBackend/JSBackend.cpp @@ -511,7 +511,10 @@ std::string JSWriter::getLoad(const std::string& Assign, const Value *P, const T std::string text; if (Bytes <= Alignment || Alignment == 0) { text = Assign + getPtrLoad(P); - if (Alignment == 536870912) text += "; abort() /* segfault */"; + if (const IntToPtrInst *ITP = dyn_cast<IntToPtrInst>(P)) { + // loads from an absolute constants are either intentional segfaults (int x = *((int*)0)), or code problems + if (isa<ConstantInt>(ITP->getOperand(0))) text += "; abort() /* segfault, load from absolute addr */"; + } } else { // unaligned in some manner std::string PS = getOpName(P); |