From 217e056e409f51bc64a82334e72bed0f14a51270 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 26 Jun 2010 20:27:24 +0000 Subject: implement rdar://7432000 - signed negate should codegen as NSW. While I'm in there, adjust pointer to member adjustments as well. llvm-svn: 106955 --- clang/test/CodeGen/builtins-ppc-altivec.c | 6 +++--- clang/test/CodeGen/exprs.c | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'clang/test/CodeGen') diff --git a/clang/test/CodeGen/builtins-ppc-altivec.c b/clang/test/CodeGen/builtins-ppc-altivec.c index b40cf5bed60..1ffb05905af 100644 --- a/clang/test/CodeGen/builtins-ppc-altivec.c +++ b/clang/test/CodeGen/builtins-ppc-altivec.c @@ -43,13 +43,13 @@ int main () int res_i; /* vec_abs */ - vsc = vec_abs(vsc); // CHECK: sub <16 x i8> zeroinitializer + vsc = vec_abs(vsc); // CHECK: sub nsw <16 x i8> zeroinitializer // CHECK: @llvm.ppc.altivec.vmaxsb - vs = vec_abs(vs); // CHECK: sub <8 x i16> zeroinitializer + vs = vec_abs(vs); // CHECK: sub nsw <8 x i16> zeroinitializer // CHECK: @llvm.ppc.altivec.vmaxsh - vi = vec_abs(vi); // CHECK: sub <4 x i32> zeroinitializer + vi = vec_abs(vi); // CHECK: sub nsw <4 x i32> zeroinitializer // CHECK: @llvm.ppc.altivec.vmaxsw vf = vec_abs(vf); // CHECK: and <4 x i32> diff --git a/clang/test/CodeGen/exprs.c b/clang/test/CodeGen/exprs.c index d82cbf48d30..a90ae58dc3f 100644 --- a/clang/test/CodeGen/exprs.c +++ b/clang/test/CodeGen/exprs.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -emit-llvm -o - +// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s // PR1895 // sizeof function @@ -119,3 +119,16 @@ void f9(struct S *x) { void f10() { __builtin_sin(0); } + +// Tests for signed integer overflow stuff. +// rdar://7432000 +void f11() { + // CHECK: define void @f11 + extern volatile int f11G, a, b; + // CHECK: add nsw i32 + f11G = a + b; + // CHECK: sub nsw i32 + f11G = a - b; + // CHECK: sub nsw i32 0, + f11G = -a; +} -- cgit v1.2.3