diff options
Diffstat (limited to 'llvm/test/Transforms/IPConstantProp/comdat-ipo.ll')
-rw-r--r-- | llvm/test/Transforms/IPConstantProp/comdat-ipo.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Transforms/IPConstantProp/comdat-ipo.ll b/llvm/test/Transforms/IPConstantProp/comdat-ipo.ll new file mode 100644 index 00000000000..6c4c44c33e2 --- /dev/null +++ b/llvm/test/Transforms/IPConstantProp/comdat-ipo.ll @@ -0,0 +1,28 @@ +; RUN: opt < %s -ipconstprop -S | FileCheck %s + +; See PR26774 + +define i32 @baz() { + ret i32 10 +} + +; We can const-prop @baz's return value *into* @foo, but cannot +; constprop @foo's return value into bar. + +define linkonce_odr i32 @foo() { +; CHECK-LABEL: @foo( +; CHECK-NEXT: %val = call i32 @baz() +; CHECK-NEXT: ret i32 10 + + %val = call i32 @baz() + ret i32 %val +} + +define i32 @bar() { +; CHECK-LABEL: @bar( +; CHECK-NEXT: %val = call i32 @foo() +; CHECK-NEXT: ret i32 %val + + %val = call i32 @foo() + ret i32 %val +} |