aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/JSBackend/JSBackend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/JSBackend/JSBackend.cpp')
-rw-r--r--lib/Target/JSBackend/JSBackend.cpp5
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);