diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-11-26 19:22:59 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-11-26 19:22:59 +0000 |
commit | 8934577171b967cc23186c2ffa0a0c4b54a8d992 (patch) | |
tree | 71cf3a68625564d956029ae1d8dbd91c62f24077 /llvm/test/Transforms/FunctionImport/funcimport.ll | |
parent | ff2f14731a19f36127c1e7302530b322698e3918 (diff) | |
download | bcm5719-llvm-8934577171b967cc23186c2ffa0a0c4b54a8d992.tar.gz bcm5719-llvm-8934577171b967cc23186c2ffa0a0c4b54a8d992.zip |
Disallow aliases to available_externally.
They are as much trouble as aliases to declarations. They are requiring
the code generator to define a symbol with the same value as another
symbol, but the second symbol is undefined.
If representing this is important for some optimization, we could add
support for available_externally aliases. They would be *required* to
point to a declaration (or available_externally definition).
llvm-svn: 254170
Diffstat (limited to 'llvm/test/Transforms/FunctionImport/funcimport.ll')
-rw-r--r-- | llvm/test/Transforms/FunctionImport/funcimport.ll | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/test/Transforms/FunctionImport/funcimport.ll b/llvm/test/Transforms/FunctionImport/funcimport.ll index 57452b1ec53..2c9164fdaa9 100644 --- a/llvm/test/Transforms/FunctionImport/funcimport.ll +++ b/llvm/test/Transforms/FunctionImport/funcimport.ll @@ -14,6 +14,7 @@ define i32 @main() #0 { entry: call void (...) @weakalias() call void (...) @analias() + call void (...) @linkoncealias() %call = call i32 (...) @referencestatics() %call1 = call i32 (...) @referenceglobals() %call2 = call i32 (...) @referencecommon() @@ -27,11 +28,15 @@ entry: ; CHECK-DAG: declare extern_weak void @weakalias() declare void @weakalias(...) #1 -; Aliases import the aliasee function -; CHECK-DAG: @analias = alias void (...), bitcast (void ()* @globalfunc2 to void (...)*) -; CHECK-DAG: define available_externally void @globalfunc2() +; Cannot create an alias to available_externally +; CHECK-DAG: declare void @analias() declare void @analias(...) #1 +; Aliases import the aliasee function +declare void @linkoncealias(...) #1 +; CHECK-DAG: define linkonce_odr void @linkoncefunc() +; CHECK-DAG: @linkoncealias = alias void (...), bitcast (void ()* @linkoncefunc to void (...)* + ; INSTLIMDEF-DAG: define available_externally i32 @referencestatics(i32 %i) ; INSTLIM5-DAG: declare i32 @referencestatics(...) declare i32 @referencestatics(...) #1 |