summaryrefslogtreecommitdiff
path: root/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/Generic/2003-07-08-BadCastToBool.ll')
-rw-r--r--test/CodeGen/Generic/2003-07-08-BadCastToBool.ll23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll b/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
index 56e02d05b3..5736c951b7 100644
--- a/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
+++ b/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
@@ -1,3 +1,26 @@
+;; Date: Jul 8, 2003.
+;; From: test/Programs/MultiSource/Olden-perimeter
+;; Function: int %adj(uint %d.1, uint %ct.1)
+;;
+;; Errors: (1) cast-int-to-bool was being treated as a NOP (i.e., the int
+;; register was treated as effectively true if non-zero).
+;; This cannot be used for later boolean operations.
+;; (2) (A or NOT(B)) was being folded into A orn B, which is ok
+;; for bitwise operations but not booleans! For booleans,
+;; the result has to be compared with 0.
+;;
+;; LLC Output for the basic block (LLVM assembly is shown below):
+;;
+;; .L_adj_7_LL_4:
+;; sethi 0, %i0
+;; subcc %i1, 2, %g0
+;; move %icc, 1, %i0
+;; orn %i0, %i1, %i0
+;; ba .L_adj_7_LL_5
+;; nop
+;;
+
+
target endian = big
target pointersize = 64